0
0

Spring Data JPAを使ったデータベース操作を簡単にまとめ

Posted at

Spring Data JPAを使用すると、Javaアプリケーションでデータベースとの連携を効率的に行うことができます。

1. プロジェクト設定

Mavenの場合

<!-- pom.xml -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <scope>runtime</scope>
</dependency>

Gradleの場合

// build.gradle
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    runtimeOnly 'org.postgresql:postgresql'
}

2. エンティティクラスの作成

データベースのテーブルに対応するエンティティクラスを作成します。以下は、Userエンティティの例です。

// User.java
import javax.persistence.*;

@Entity
@Table(name = "users")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "username", nullable = false, unique = true)
    private String username;

    @Column(name = "email", nullable = false, unique = true)
    private String email;

    // コンストラクタ、ゲッター、セッター、その他のメソッド
}

3. リポジトリの作成

エンティティに対するデータベース操作を行うリポジトリ(Repository)インターフェースを作成します。Spring Data JPAが自動的に実装を提供します。

// UserRepository.java
import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {
    // 追加のカスタムクエリメソッドを定義可能
}

4. サービスクラスの作成

サービスクラスを作成し、リポジトリを介してデータベース操作を行います。

// UserService.java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    public List<User> getAllUsers() {
        return userRepository.findAll();
    }

    public User getUserById(Long id) {
        return userRepository.findById(id).orElse(null);
    }

    public User saveUser(User user) {
        return userRepository.save(user);
    }

    public void deleteUser(Long id) {
        userRepository.deleteById(id);
    }
}

5. リポジトリクラスのカスタムクエリメソッド

// UserRepository.java
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.util.List;

public interface UserRepository extends JpaRepository<User, Long> {

    // メソッド名から自動生成されるクエリ
    List<User> findByUsername(String username);

    // ANDやORで結合条件を追加した例
    List<User> findByUsernameAndEmail(String username, String email);

    // LIKEや%での部分一致検索
    List<User> findByUsernameContaining(String keyword);

    // Order Byを追加した例
    List<User> findByOrderByUsernameAsc();
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0