カテゴリ: Spring 更新日: 2026/03/24

SpringDataJPAのJPAクエリメソッド「EndingWith」の使い方を完全ガイド!初心者向け解説

SpringDataJPAのクエリメソッド(EndingWith)
SpringDataJPAのクエリメソッド(EndingWith)

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

生徒

「SpringDataJPAで、特定の文字列で終わるデータを検索したいのですが、どうすればいいですか?」

先生

「その場合は、EndingWithを使うと簡単に実現できますよ!」

生徒

「具体的にどうやって書けばいいのか教えてください!」

先生

「それでは、基本的な使い方を見ていきましょう!」

1. EndingWithとは?(後方一致検索の基本)

「1. EndingWithとは?(後方一致検索の基本)」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

1. EndingWithとは?(後方一致検索の基本)
1. EndingWithとは?(後方一致検索の基本)

Spring Data JPAのEndingWithは、データベースの特定のカラム(項目)が「指定した文字で終わっているか」を判定する、いわゆる「後方一致検索」を簡単に実現するためのキーワードです。

プログラミング未経験の方にとって、「検索」と言えば完全一致(キーワードが全て同じ)を想像しがちですが、実務では「名字が'田'で終わる人(山田、田中など)」や「メールアドレスが'@example.com'で終わるユーザー」を探したい場面が非常に多くあります。

これを従来のプログラムで書こうとすると、SQLというデータベース専用の難しい言語を組み立てる必要がありますが、Spring Data JPAならメソッド名にルール通りに書き加えるだけで、システムが自動的に検索プログラムを生成してくれます。

???? イメージを掴もう:もし「果物リスト」から検索するなら?

「apple(りんご)」で終わるものを探すと指定した場合:

  • Pineapple(パインアップル) → ヒット!
  • Green apple(青りんご) → ヒット!
  • Apple juice(アップルジュース) → 終わりの文字ではないのでヒットしない

このように、データの「末尾(うしろ)」だけに注目して抽出できるのがEndingWithの最大のメリットです。コードの書き方も非常にシンプルで、後述するリポジトリインターフェースに定義するだけで、内部的にLIKE '%キーワード'という検索命令が実行される仕組みになっています。

2. クエリメソッドの基本的な書き方

2. クエリメソッドの基本的な書き方
2. クエリメソッドの基本的な書き方

Spring Data JPAでは、メソッド名に特定のキーワードを含めるだけで、SQLを意識せずにデータベース検索が行えます。今回は、特定の文字列で終わるデータを抽出するEndingWithの使い方を、プログラミング初心者の方にも分かりやすく解説します。

以下は、ユーザー名(firstname)の後ろの文字を指定して検索する、最も基本的なクエリメソッドの定義例です。


public interface UserRepository extends JpaRepository<User, Long> {
    // 「firstname」が引数の文字列で終わるレコードを自動で検索する
    List<User> findByFirstnameEndingWith(String suffix);
}

このメソッドの最大の特徴は、「検索したい条件をメソッド名にするだけ」でプログラムが完成する点です。

例えば、findByFirstnameEndingWith("子")と呼び出すと、データベースからは「花子」「桃子」「優子」といった、末尾に「子」がつくユーザーだけが自動的に抽出されます。

内部的にはSQLのLIKE %キーワードという命令が実行されていますが、Springが自動的にパラメータの先頭にワイルドカード(%)を付加してくれるため、開発者が面倒な文字列操作を記述する必要はありません。複雑な設定なしで直感的に検索機能を実装できるため、Java開発の現場で非常に重宝される書き方です。

3. JPQLでの動作イメージ

3. JPQLでの動作イメージ
3. JPQLでの動作イメージ

上記のクエリメソッドは、以下のようなJPQLに変換されます。


SELECT u 
FROM User u 
WHERE u.firstname LIKE ?1

パラメータには、自動的に%が先頭に付加されます。たとえば、"son"を指定した場合、"%son"がクエリに使用されます。

4. 実際の使い方例

「4. 実際の使い方例」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

4. 実際の使い方例
4. 実際の使い方例

以下は、findByFirstnameEndingWithをサービス層で使用する具体例です。


@Service
public class UserService {
    private final UserRepository userRepository;

    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public List<User> findUsersEndingWith(String suffix) {
        return userRepository.findByFirstnameEndingWith(suffix);
    }
}

このコードでは、findByFirstnameEndingWithを呼び出し、指定した文字列で終わるユーザーを取得しています。 例えば、findUsersEndingWith("son")を実行すると、「son」で終わるすべてのユーザーが検索されます。

5. EndingWithを使うときの注意点

5. EndingWithを使うときの注意点
5. EndingWithを使うときの注意点

EndingWithを使用する際には、以下の点に注意してください。

  • デフォルトでは大文字小文字が区別されるため、必要に応じてUPPER関数やデータベース設定を確認してください。
  • データ量が多い場合、インデックスを使用して検索パフォーマンスを向上させることを検討してください。
  • ワイルドカードが自動的に付加される動作を理解し、追加の加工が不要であることを確認してください。

これらのポイントを考慮することで、EndingWithを使った効率的な検索が可能になります。

6.まとめ

6.まとめ
6.まとめ

今回は、SpringDataJPAのEndingWithを使ったクエリメソッドについて詳しく解説しました。 このメソッドは、特定の文字列で終わるデータを効率よく検索するのに非常に便利です。 また、自動的にワイルドカード%が先頭に付加されるため、開発者が手動で加工する手間を省くことができます。 実際の使用例を確認し、JPQLへの変換や注意点についても学びました。これにより、部分一致検索の重要なスキルを身に付けられたのではないでしょうか。

SpringDataJPAの柔軟性を理解し、EndingWithをプロジェクトに適用することで、データベース検索をさらに効率化できます。 次回は別のクエリメソッドを使用した検索方法について学んでみましょう!


@Service
public class UserService {
    private final UserRepository userRepository;

    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public List<User> getUsersEndingWith(String suffix) {
        return userRepository.findByFirstnameEndingWith(suffix);
    }
}
    

このように実装することで、柔軟かつ効率的にデータを取得できるようになります。コード例を参考に、ぜひ実際のプロジェクトで試してみてください!

先生と生徒の振り返り会話

生徒

EndingWithを使えば、簡単に特定の文字列で終わるデータを検索できるんですね!」

先生

「その通りです。これに加えて、StartingWithContainingも組み合わせると、さらに柔軟な検索が可能ですよ。」

生徒

「ワイルドカードが自動で追加される点が便利だと感じました。他に応用できるシーンはありますか?」

先生

「たとえば、名前やメールアドレスのドメイン部分でフィルタリングする際などに便利です。業務要件に応じて活用してみてください!」

この記事を読んだ人からの質問

「この記事を読んだ人からの質問」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Spring Data JPAの「EndingWith」とはどのような機能を持つメソッドなのですか?具体的な役割を教えてください。

Spring Data JPAのクエリメソッドである「EndingWith」は、データベース検索において「指定した特定の文字列で終わるデータ」を抽出するための非常に便利な機能です。プログラミング初心者がJavaでWebアプリケーションを開発する際、データベースから特定の条件に合致するユーザーや商品を検索する機能は必須となります。例えば、ユーザー名の末尾が特定の文字である場合や、商品コードの最後が特定のアルファベットで終わる場合などに、SQLを直接記述することなくJavaのメソッド定義だけで簡単に検索ロジックを実装できるのが最大のメリットです。この記事で解説している通り、部分一致検索の中でも特に「後方一致」に特化したメソッドとして定義されています。
カテゴリの一覧へ
新着記事
New1
Java
JavaのExceptionクラスを完全解説!初心者でも理解できる例外処理の基本
更新記事
New2
Thymeleaf
Thymeleafのth:classappend属性の使い方を完全ガイド!初心者でもわかる動的クラス追加
更新記事
New3
Java
Javaのカプセル化を完全ガイド!初心者でもわかるデータの保護と制御の使い方
更新記事
New4
Servlet
サーブレットでレスポンスを返す方法とは?PrintWriter・JSON・HTMLを初心者向けに解説!
更新記事
人気記事
No.1
Java&Spring記事人気No1
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Spring
Springの@Componentアノテーションの使い方を徹底解説!初心者でもわかるSpring Boot入門
No.3
Java&Spring記事人気No3
Java
Javaの@SuppressWarningsアノテーションの使い方を完全ガイド!初心者でもわかる警告の抑制方法
No.4
Java&Spring記事人気No4
JSP
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介
No.5
Java&Spring記事人気No5
Spring
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.6
Java&Spring記事人気No6
Spring
Spring BootのJakarta移行ガイド!初心者向けjavax→jakarta変更ポイント徹底解説
No.7
Java&Spring記事人気No7
Java
Java開発環境「Eclipse(Pleiades)」のインストール方法とメリットを初心者向けに解説
No.8
Java&Spring記事人気No8
Thymeleaf
Thymeleafのth:checkedの使い方!チェックボックスON/OFFを動的に制御する方法