カテゴリ: Spring 更新日: 2025/10/30

Spring Boot JPA入門:エンティティ/リポジトリの基本と作り方

Spring Boot JPA入門:エンティティ/リポジトリの基本と作り方
Spring Boot JPA入門:エンティティ/リポジトリの基本と作り方

先生と生徒の会話形式で理解しよう

生徒

「Spring Bootでデータベースと連携したいんですが、JPAって何から始めればいいですか?」

先生

「JPAを使えば、オブジェクトとデータベースのテーブルを自動で紐づけてくれますよ。まずはエンティティとリポジトリの基本から学ぶといいですね。」

生徒

「なるほど。エンティティって何ですか?リポジトリって何をするんですか?」

先生

「よし、じゃあSpring Boot JPAの基本的な使い方を、エンティティとリポジトリの作成手順と一緒に確認してみましょう。」

1. Spring BootとJPAの関係とは?

1. Spring BootとJPAの関係とは?
1. Spring BootとJPAの関係とは?

Spring Bootは、JavaでWebアプリケーションを簡単に開発できるフレームワークです。そして、JPA(Java Persistence API)は、オブジェクトとデータベースのテーブルをマッピングするための仕組みです。Spring Bootでは、JPAを使うことでSQLを書かずにデータベース操作が可能になります。初心者でもエンティティクラスとリポジトリインターフェースを用意するだけで簡単に使い始めることができます。

2. エンティティクラスとは何か?

2. エンティティクラスとは何か?
2. エンティティクラスとは何か?

エンティティ(Entity)クラスは、データベースのテーブルと1対1で対応するJavaクラスです。たとえば、ユーザー情報を管理する場合、「User」エンティティを作成します。このクラスにアノテーションをつけることで、どのフィールドが主キーか、どのカラムに対応するかを定義できます。


import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.GeneratedValue;

@Entity
public class User {
    @Id
    @GeneratedValue
    private Long id;

    private String name;
    private String email;

    // getterとsetterを省略
}

3. リポジトリインターフェースの役割と作り方

3. リポジトリインターフェースの役割と作り方
3. リポジトリインターフェースの役割と作り方

リポジトリ(Repository)は、データベースへのアクセスを担当する部分です。Spring Data JPAを使えば、インターフェースを定義するだけで、自動的にCRUD操作(登録・取得・更新・削除)ができるようになります。以下のようにJpaRepositoryを継承することで、簡単にデータアクセスが可能になります。


import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {
    // nameで検索するメソッド
    List<User> findByName(String name);
}

4. Spring BootでJPAを使うための設定

4. Spring BootでJPAを使うための設定
4. Spring BootでJPAを使うための設定

Spring BootでJPAを使うには、application.propertiesまたはapplication.ymlにデータベース接続情報を記述する必要があります。以下は一般的なMySQLの設定例です。


spring.datasource.url=jdbc:mysql://localhost:3306/sampledb
spring.datasource.username=root
spring.datasource.password=yourpassword
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true

この設定を行うことで、Spring Boot起動時にテーブルが自動生成され、ログにSQLも出力されるようになります。

5. データを登録・検索する方法

5. データを登録・検索する方法
5. データを登録・検索する方法

実際にコントローラーからリポジトリを使ってデータベース操作を行ってみましょう。たとえば、ユーザー登録や一覧取得のコードは以下のようになります。


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/users")
public class UserController {

    @Autowired
    private UserRepository userRepository;

    @PostMapping
    public User create(@RequestBody User user) {
        return userRepository.save(user);
    }

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

    @GetMapping("/search")
    public List<User> findByName(@RequestParam String name) {
        return userRepository.findByName(name);
    }
}

6. Spring Boot JPAの自動テーブル生成と注意点

6. Spring Boot JPAの自動テーブル生成と注意点
6. Spring Boot JPAの自動テーブル生成と注意点

JPAでは、エンティティクラスを定義するだけで、自動的にテーブルが作成されます。ddl-auto=updateに設定することで、変更があれば自動でテーブルが更新されます。ただし、本番環境ではこの自動更新は推奨されないため、マイグレーションツール(FlywayやLiquibase)の使用が一般的です。

7. JPAを使うメリットとは?

7. JPAを使うメリットとは?
7. JPAを使うメリットとは?

Spring Boot JPAを使うと、SQLを書かずに簡単にデータベース操作が可能になります。また、エンティティクラスにアノテーションをつけるだけで自動的にテーブルを作成し、リポジトリでデータ取得が簡単に行えるため、初心者でも理解しやすく、安全でメンテナンス性の高いコードを書くことができます。

8. 実務でよく使うアノテーションの一覧

8. 実務でよく使うアノテーションの一覧
8. 実務でよく使うアノテーションの一覧

JPAでよく使うアノテーションには以下のようなものがあります。

  • @Entity:テーブルにマッピングするクラスに指定
  • @Id:主キーに指定
  • @GeneratedValue:自動採番
  • @Column:カラムの詳細設定
  • @Table:テーブル名の指定(省略可)

これらを理解することで、より柔軟なエンティティ設計が可能になります。

9. よくあるエラーと解決方法

9. よくあるエラーと解決方法
9. よくあるエラーと解決方法

初心者がJPAを使う際によく遭遇するのが以下のようなエラーです。

  • アノテーションの付け忘れ:@Entity@Idがないとテーブルが作られません
  • データ型のミスマッチ:Javaの型とDBの型が一致していないと保存エラーになります
  • コネクションエラー:application.propertiesの設定ミス

これらはメッセージをよく読み、設定やコードを丁寧に確認すれば解決できます。

カテゴリの一覧へ
新着記事
Javaのラムダ式で戻り値とvoidの使い方を解説!returnの書き方も完全理解
Javaのメソッド参照とコンストラクタ参照の使い方を完全ガイド!初心者向けに::とClass::newを解説
Javaのラムダ式の書き方を徹底解説!アロー演算子->の基本と使い方
Thymeleafのth:eachの使い方!ループ回数やindexなどの繰り返し処理を学ぼう
人気記事
No.1
Java&Spring記事人気No1
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Spring Boot JPA入門:エンティティ/リポジトリの基本と作り方
No.3
Java&Spring記事人気No3
Javaの@Validアノテーションを徹底解説!初心者でもわかる入力値検証の基本
No.4
Java&Spring記事人気No4
Springの@Repositoryアノテーションの使い方を徹底解説!初心者でもわかるSpringフレームワークのデータアクセス