カテゴリ: Spring 更新日: 2025/11/01

Spring Data JPAのCRUDとQuery Methods:findBy~命名ルール徹底解説

Spring Data JPAのCRUDとQuery Methods:findBy~命名ルール徹底解説
Spring Data JPAのCRUDとQuery Methods:findBy~命名ルール徹底解説

教材紹介 Spring Boot 学習のおすすめ教材

Spring Bootを使ったWebアプリケーション開発を、 環境構築から実践まで一通り学びたい方には、 定評のある入門書が参考になります。

Spring Boot 3 プログラミング入門をAmazonで見る

※ Amazon広告リンク

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

生徒

「Spring Data JPAでデータを検索する方法って、どんな書き方があるんですか?」

先生

「Spring Data JPAでは、findByで始まるメソッド名を使って簡単に検索処理が書けますよ。命名ルールに従えば、SQLを書かずに検索できます。」

生徒

「メソッド名だけで検索できるなんて便利ですね。どんなルールになっているのか詳しく知りたいです。」

先生

「それでは、Spring Data JPAのCRUD操作とQuery Methodsの基本を一緒に見ていきましょう!」

1. Spring Data JPAでのCRUDとは?

1. Spring Data JPAでのCRUDとは?
1. Spring Data JPAでのCRUDとは?

Spring Data JPAは、Javaでデータベースとやり取りする際の手間を大幅に減らしてくれる便利なライブラリです。特にCRUD操作、つまりデータの作成(Create)、取得(Read)、更新(Update)、削除(Delete)を、専用のメソッドや命名ルールを使うだけで簡単に実装できます。

CRUD操作を行うには、JpaRepositoryを継承したインターフェースを作成するだけでOKです。以下がその基本の書き方です。


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

public interface UserRepository extends JpaRepository<User, Long> {
}

2. findByとは何か?Query Methodsの基本

2. findByとは何か?Query Methodsの基本
2. findByとは何か?Query Methodsの基本

Spring Data JPAでは、リポジトリにfindByというプレフィックスを付けたメソッドを定義することで、SQLを一切書かずに検索機能を実装できます。これを「Query Method(クエリメソッド)」と呼びます。

たとえば、ユーザーの名前で検索したいときは、以下のようにfindByNameというメソッドを定義するだけでOKです。


List<User> findByName(String name);

このように、メソッド名から自動的にJPQL(Java Persistence Query Language)を生成してくれるのがQuery Methodsの魅力です。

3. Query Methodsの命名ルール:基本構文

3. Query Methodsの命名ルール:基本構文
3. Query Methodsの命名ルール:基本構文

Spring Data JPAのQuery Methodsでは、findByに続けてエンティティのフィールド名をつけることで、自動的に検索処理を作成してくれます。基本構文は以下の通りです。

  • findByフィールド名:一致するデータを検索
  • findByフィールド名And他フィールド名:複数条件で検索
  • findByフィールド名OrderBy他フィールド名Desc:並び替え付き

例えば、名前とメールアドレスの両方で検索する場合は次のようになります。


List<User> findByNameAndEmail(String name, String email);

Spring FrameworkやThymeleafを使った Webアプリ開発の全体像をやさしく理解したい人には、 この入門書が定番です。

Spring Framework超入門をAmazonで見る

※ Amazon広告リンク

4. 条件演算子の活用:ContainingやBetweenなど

4. 条件演算子の活用:ContainingやBetweenなど
4. 条件演算子の活用:ContainingやBetweenなど

Query Methodsでは、さまざまな演算子を使って柔軟な検索が可能です。以下によく使う演算子をまとめます。

  • findByNameContaining:部分一致検索(LIKE)
  • findByAgeBetween:範囲検索
  • findByActiveTrue:真偽値による検索
  • findByCreatedAtAfter:指定日付より後
  • findByCreatedAtBefore:指定日付より前

たとえば、名前に「山」が含まれているユーザーを検索するには、以下のように書きます。


List<User> findByNameContaining(String keyword);

5. ソート・並び替えの記述方法

5. ソート・並び替えの記述方法
5. ソート・並び替えの記述方法

Query Methodsでは、結果のソート(昇順・降順)もメソッド名に記述できます。OrderByを使い、対象フィールドにAscDescをつけるだけです。


List<User> findByAgeGreaterThanOrderByNameAsc(int age);

この例では、指定した年齢より大きいユーザーを名前順(昇順)で取得します。

6. Optionalの活用でnull安全に

6. Optionalの活用でnull安全に
6. Optionalの活用でnull安全に

1件だけを取得する場合は、戻り値にOptionalを使うことで、nullチェックを安全に行うことができます。


Optional<User> findByEmail(String email);

取得できなかった場合もOptional.empty()が返るので、nullによるエラーを防げます。

7. JPQLや@Queryとの使い分け

7. JPQLや@Queryとの使い分け
7. JPQLや@Queryとの使い分け

Query Methodsで書けない複雑なクエリが必要なときは、@Queryアノテーションを使ってJPQLを明示的に書くことができます。


@Query("SELECT u FROM User u WHERE u.name LIKE %:keyword%")
List<User> searchByName(@Param("keyword") String keyword);

ただし、単純な検索であればfindBy命名ルールで十分対応可能なので、まずは命名ベースで書くのがおすすめです。

8. 実務で役立つfindBy命名例まとめ

8. 実務で役立つfindBy命名例まとめ
8. 実務で役立つfindBy命名例まとめ

以下は実務でよく使われるfindBy命名例です。

  • findByUsername:ユーザー名で検索
  • findByStatusAndRole:状態と役割で検索
  • findByTitleContainingOrderByCreatedAtDesc:タイトル部分一致+作成日降順
  • findByEmailIsNotNull:メールが設定されているユーザー

このような命名規則を理解しておくことで、Spring Data JPAで柔軟かつ高速な開発が可能になります。

カテゴリの一覧へ
新着記事
JavaのIndexOutOfBoundsExceptionを完全ガイド!初心者でも理解できる例外処理と回避方法
スッキリわかるJava入門 第4版|独学でもレッスンでも学べる完全ガイド
JavaのCookieクラスのgetCommentメソッドを解説!Servlet開発でクッキーの説明文を取得する方法
JavaのBufferedOutputStreamクラスのwriteメソッドを徹底解説!初心者でもわかるファイルへのバイナリ書き込み
人気記事
No.1
Java&Spring記事人気No1
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.3
Java&Spring記事人気No3
Spring Data JPA入門!findAll()やfindBy**()の使い方などデータベース操作の基礎を学ぶ
No.4
Java&Spring記事人気No4
Thymeleafのth:classappend属性の使い方を完全ガイド!初心者でもわかる動的クラス追加
No.5
Java&Spring記事人気No5
Spring BootのJakarta移行ガイド!初心者向けjavax→jakarta変更ポイント徹底解説
No.6
Java&Spring記事人気No6
Thymeleaf(タイムリーフ)入門!初心者でもわかるSpring Bootとテンプレートエンジンの使い方
No.7
Java&Spring記事人気No7
Springの@Repositoryアノテーションの使い方を徹底解説!初心者でもわかるSpringフレームワークのデータアクセス
No.8
Java&Spring記事人気No8
JavaのArrayListクラスとgetメソッドを完全解説!初心者でもわかるリストの要素取得

💻 作業効率アップに

長時間のコーディングでも疲れにくい♪ 静音ワイヤレスマウス

Logicool Signature M750 を見る

※ Amazon広告リンク