はじめに
Spring Boot でデータベースを扱うとき、
Spring Data JPA を使うと驚くほどコードがシンプルになります。
- SQL を書かなくても CRUD ができる
- Repository を作るだけで DB と連携できる
- 複雑な検索もメソッド名で表現できる
でも、仕組みが分からないまま使っている人も多いです。
この記事では、Spring Data JPA の基本を
やさしく・実務寄り で整理していきます。
まずはコードから見ていきましょう。
Spring Data JPA とは
一言でいうと、
「JPA(Java の ORM)を、もっと簡単に使えるようにした仕組み」
です。
- JPA → ORM(Java と DB をつなぐ仕組み)
- Spring Data JPA → JPA を便利に使うためのライブラリ
つまり、
DB アクセスを“ほぼ自動化”してくれる道具
と理解するとわかりやすいです。
まずは基本のコードを確認
Entity(DB のテーブルに対応するクラス)
@Entity
public class User {
@Id
@GeneratedValue
private Long id;
private String name;
private int age;
}Repository(DB とやり取りする窓口)
public interface UserRepository extends JpaRepository<User, Long> {
}これだけで、
- findById
- findAll
- save
- delete
などの CRUD が自動で使えるようになります。
Spring Data JPA の便利ポイント
CRUD が自動で使える
JpaRepository を継承するだけで、
基本的な DB 操作がすべて揃います。
userRepository.findById(id);
userRepository.findAll();
userRepository.save(user);
userRepository.deleteById(id);SQL を書く必要はありません。
メソッド名で検索条件を表現できる
Spring Data JPA の最大の特徴です。
List<User> findByName(String name);
List<User> findByAgeGreaterThan(int age);
List<User> findByNameAndAge(String name, int age);メソッド名を読むだけで、
どんな検索をするのかが分かる のが魅力です。
@Query で柔軟な検索もできる
複雑な検索は @Query を使います。
@Query("SELECT u FROM User u WHERE u.name LIKE %:keyword%")
List<User> search(@Param("keyword") String keyword);JPQL(Java の SQL 風言語)で書けます。
ページング・ソートが簡単
Page<User> findAll(Pageable pageable);ページングやソートも自動で対応できます。
トランザクションと相性が良い
Repository のメソッドは
Service 層の @Transactional の中で使う のが基本です。
Spring Data JPA の仕組みをふわっと理解する
Entity が DB のテーブルと対応する
- クラス → テーブル
- フィールド → カラム
Repository が SQL を自動生成する
JpaRepository が内部で SQL を作ってくれます。
JPA が Entity と DB のデータを変換する
- DB → Entity
- Entity → DB
この変換を ORM と呼びます。
実務でよくあるつまずき
Entity に @Id がない
→ 起動時にエラーになります。
フィールド名とカラム名が一致しない
→ @Column を使って明示する必要があります。
遅延ロード(LAZY)でエラー
→ Service 層でデータを使う前にトランザクションが終わっているパターン。
N+1 問題
fetch join や @EntityGraph を使うと改善できます。
Spring Data JPA をもっと活かすポイント
DTO と組み合わせる
Entity を外に出さず、
レスポンスは DTO に変換するのが基本です。
Service 層でロジックをまとめる
Repository は“データ係”、
Service は“頭脳”です。
@Transactional と組み合わせる
データの整合性を守るために必須です。
まとめ
Spring Data JPA は、
「DB アクセスを自動化してくれる便利な仕組み」
です。
- CRUD が自動
- メソッド名で検索
- @Query で柔軟な検索
- ページング・ソートも簡単
- Entity と Repository を作るだけで動く
難しく聞こえますが、
「Repository を作るだけで DB とやり取りできる」
と理解できれば十分です。

Spring Data JPA を理解すると、
Repository 層のコードが一気にシンプルになります。
SQL を書かずに DB と連携できるだけで、
開発のスピードも保守性もぐっと上がります。
あなたの開発が、今日より少しだけ楽になりますように。

SQL を自動で作ってくれるなんて…
Spring さん、やさしいね。

コメント