IntelliJ IDEA 2026.1 Help

Spring Data

Spring Data JPA は、JPA ベースのリポジトリをすばやく簡単に実装できる、より大きな Spring Data ファミリの一部です。 JPA Buddy は、Java と Kotlin エンティティの両方に対して、リポジトリ、射影、クエリなどを生成するための明確な UI を提供します。 これらの機能を有効にするには、プロジェクトに インストールガイドに記載されている依存関係が含まれている必要があります。

リポジトリの作成

JPA Buddy は、ほとんどのユーザーにとって JPA 関連オブジェクトの操作をより便利にするために、リポジトリを作成するさまざまな方法を提供します。 プロジェクト内にリポジトリを生成する可能なすべての方法が、次のビデオで示されています。

「新規 JPA リポジトリ」ウィンドウでは、以下を設定できます。

  • リポジトリが作成されるエンティティ

  • リポジトリクラスの名前

  • リポジトリの親クラス。 次のようになります:

  • リポジトリが JpaSpecificationExecutor を拡張するかどうか

  • ソースルート

  • リポジトリが作成されるパッケージ

new-jpa-repository

各エンティティに対して Spring Data リポジトリを 1 つずつ作成するのは面倒な作業になることがあります。 JPA Buddy を使用すると、このプロセスを高速化できます。 複数の JPA エンティティのリポジトリを一度に作成するには、3 つの手順を実行する必要があります。 プロジェクトツリーでエンティティを選択し、JPA Buddy ウィザードを起動して、選択を調整します。 これで完了です。 この機能によって開発プロセスがどのように高速化されるかを見てみましょう。

JPA 構造リポジトリ

JPA Buddy は、各エンティティのすべてのリポジトリを 1 か所にグループ化し、プロジェクト内で最も効率的なナビゲーションを可能にします。 エンティティのリポジトリが別のプロジェクトパッケージにあるか、同じプロジェクトパッケージにあるかは関係ありません。 エンティティに関連するすべてのリポジトリが リポジトリ セクションに表示されます。 ここから、リポジトリの実装にすぐに移動したり、新しいリポジトリを作成したりできます。

jpa-structure-repository

クエリ / メソッドの生成

Spring Data は、 @Query アノテーションを使用してクエリを定義する機能を提供します。 JPA パレット (1) またはエディターツールバー (2) を使用してクエリをすばやく記述し、入力ミスを防ぐことができます。 次のクエリタイプのいずれかを選択し、便利な UI を使用して構成します。

jpa-palette-query

サンプル

Find コレクションクエリの作成例を見てみましょう。

create-query-find-collection

ウィンドウの上部で、コレクションとクエリの戻り値の型のラップ型を定義できます。 さらに、JPA Buddy を使用すると、 + ボタンをクリックして新しい 射影インターフェースまたは DTO クラスを生成できます。

メソッド名を指定することもできます。 ただし、空のままにすると、 クエリの命名規則に続いて名前が自動的に生成されます。

ウィンドウの中央には、クエリ条件のテーブルが含まれています。

ウィンドウの下部で次を指定できます。

  • パラメーターに名前を付けるかどうか。

  • Pageable パラメーターを使用するかどうか。

  • その他。

最後に、クエリ結果を並べ替えるフィールドを指定できます。

上記の構成では、次のクエリが生成されます。

@Query(""" select distinct o from Owner o where upper(o.firstName) like upper(concat(:firstName, '%')) and upper(o.lastName) like upper(concat('%', :lastName, '%')) order by o.lastName """) @Async CompletableFuture<List<Owner>> findOwners(@Param("firstName") String firstName, @Param("lastName") @NonNull String lastName, Pageable pageable);

同じアプローチが派生クエリメソッドにも適用されます。 メソッド名フィールドを使用する代わりに、メソッド接頭辞ドロップダウンメニューを利用して、目的の件名のキーワードを定義し、エイリアスを追加できます。

derived-query-method-prefix

これにより、生成されたクエリメソッドの命名規則をカスタマイズでき、コードに柔軟性と一貫性が提供されます。

エンティティインテンション

JPA Buddy は、クエリ / メソッド作成ウィンドウに直接つながるエンティティ属性のインテンションも提供します。 目的の属性にキャレットを置き、 Alt+Enter を押して、Spring Data リポジトリの作成メソッドをクリックします。 開いたウィンドウで、必要なクエリ / メソッドのタイプを選択します。

未解決の参照

JPA Buddy は、まだ存在しないメソッドを最初に呼び出してから実装することを好む開発者を支援します。 必要な署名を記述し、特別なアクションを介してクエリまたはメソッド作成ウィザードに移動するだけです。

unresolved-reference

設定

Spring Data では、派生クエリメソッド名用のキーワード式がいくつか提供されています。 NameContaining、NameIsContaining、NameContains のいずれも使用でき、結果は同じです。 一方で、メソッド命名に柔軟性が生まれます。 しかし、大規模なチームでは、同じアクションに対して命名が異なると、レビュー担当者や保守担当者が混乱することがあります。 開発チームで命名基準を定めている場合は、JPA Buddy を設定して、承認されたキーワードのみをメソッド名生成に使用できます。

conditions-settings

既存のメソッド / クエリの変更

メソッドまたはクエリを設定するには、その上にカーソルを置き、JPA インスペクターを使用します。

jpa-inspector

エンティティグラフのサポート

EntityGraph は、JPA 2.1 で導入されることが最も待たれていた機能の 1 つです。 エンティティグラフを使用すると、フェッチする必要があるデータを制御する別の層が得られます。 JPA Buddy はそれらをサポートしているため、便利な GUI ウィザードを使用してグラフを構築できます。

クエリリファクタリング

非同期

Spring Data JPA は、リポジトリクエリを非同期で実行する機能を提供します。 クエリを非同期にするには、「@Async」アノテーションを追加するだけでは不十分で、戻り値の型を次のいずれかに変更する必要もあります。

  • Future<ClassName>

  • CompletableFuture<ClassName>

  • ListenableFuture<ClassName>

非同期クエリ結果の詳細については、対応する Spring Data JPA ドキュメント ページを参照してください。

クエリを非同期にするには、変更するクエリにキャレットを置き、ドロップダウンリストから結果の戻り値の型を選択します。

非同期

動的射影

Spring Data JPA では、汎用リポジトリメソッドを使用して実行時に射影を指定できます。 リポジトリメソッドに型クラスパラメーターを追加して、異なる射影で同じクエリを使用します。 これにより、ビジネスコードで優先される戻り値の型を定義できます。

クエリを汎用化するには、変更するクエリにキャレットを置き、「動的射影」ボックスをオンにします。

dynamic-projection

クエリの抽出

派生クエリメソッドは、クエリを定義する便利な方法です。 しかし、時間の経過とともに肥大化し読みにくい構造へ変化する可能性があり、その場合は @Query アノテーション付きのメソッドとして整理できます。 これは JPA Buddy で簡単に実現できます。 クエリにキャレットを置き、JPA インスペクタでクエリ抽出 ... をクリックします。

クエリの自動補完

IntelliJ IDEA コミュニティエディションの場合、JPA Buddy はクエリの自動補完機能を提供します (IntelliJ IDEA Ultimate エディションが提供する機能と同様)。 クエリにキャレットを置き、JPA インスペクタでクエリ編集 ... をクリックします。

射影

場合によっては、テーブルの列のサブセットのみが必要になることがあります。 そのような場合、Spring Data JPA 射影が役立ち、クエリから必要なフィールドのみを返すことができます。

新しい Spring 射影 ウィンドウでは、次のことができます。

  • ソースルートとパッケージを定義します。

  • エンティティクラスを選択します。

  • 射影クラスの名前を設定します。

  • 含めるフィールドを選択します。

また、JPA Buddy を使用すると、参照されたエンティティの射影を生成できます。 関連するエンティティを選択し、射影タイプを選択して、必要なフィールドを選択します。

new-spring-projection

上記の構成では、次の射影が生成されます。

/** * A Projection for the {@link Pet} entity */ public interface PetInfo { Integer getId(); String getName(); LocalDate getBirthDate(); PetTypeInfo getType(); OwnerInfo getOwner(); /** * A Projection for the {@link PetType} entity */ interface PetTypeInfo { Integer getId(); String getName(); } /** * A Projection for the {@link Owner} entity */ interface OwnerInfo { String getFirstName(); String getLastName(); } }

射影を JPA エンティティと同期させる

時間の経過とともにエンティティが変化する可能性があるため、それに応じて射影を変更する必要があります。 JPA Buddy を使用すると、エンティティとその射影を同期したり、その逆を行うことができます。 この機能の詳細については、「DTO ジェネレーター 」セクションを参照してください。

射影宣言の設定

各プロジェクトは、コード記述に関して独自の規則に従う場合があります。 ツール -> JPA Buddy -> 射影宣言で、次の設定を行うことができます。

  1. クラス名の接尾辞。

  2. 名前パターンの正規表現 (フィールドが空の場合、この機能は無効になります)。 このオプションは、Projection の必須の命名規則に従う場合に便利です。 これにより、JPA Buddy は Projection 名のみを使用して Projection をその JPA エンティティに関連付けることができます。 (?<entity>.) パターンを使用して、ターゲット JPA エンティティの単純クラス名のプレースホルダーを指定できます。 例: (?<entity>.*(?:Info|Prj|Projection|VO|Vo|View|Request|Browse)MyEntityInfoMyEntityPrj などを意味します。 これらのクラスは MyEntity の Projection として扱われます。

  3. クラスのコメント。 Projection インターフェース上で生成されるコメントを定義します。

  4. コメントリンクの正規表現 (フィールドが空の場合、この機能は無効になります)。 このオプションを使用すると、JPA Buddy が Projection をその JPA エンティティに関連付けることができます。 コメントでターゲットエンティティ FQN (完全修飾名) のプレースホルダーを指定するには、 (?<entity>.*) パターンを使用します。 正規表現が A Projection for the \{@link (?<entity>.*)\} entity として定義されている場合、次の Javadoc コメントで解決されます。

/** * A Projection for the {@link Pet} entity */
projection-declaration

エンティティとその射影間の便利なナビゲーション

JPA Buddy が Projection インターフェースをエンティティに関連付けることができるとすぐに、次のようになります。

  • Projection インターフェースは、JPA 構造パネルの Dto & Projections セクションおよびエディター ツールバー (1) に表示されます。

  • Projection には、エンティティへのナビゲーションを支援するガターアイコンが表示されます (2)。

projection-navigation

監査サポート

大規模なアプリケーションでは、監査を行うことが重要です。 JPA Buddy は、一般的に使用される監査フィールドに @CreatedBy@CreatedDate@LastModifiedBy@LastModifiedDate などのアノテーションを提供することで、作業を容易にします。 さらに、JPA Buddy は、 @EnableJpaAuditing アノテーションを構成に追加するのを忘れた場合、または AuditingEntityListener が現在のエンティティに追加されていない場合に通知します。 これにより、間違いの余地がさらに少なくなります。

タグ: Spring Data、JPA、射影、監査、DTO、クエリ、リポジトリ、エンティティ、JPQL、ネイティブクエリ、動的射影

Blaze 永続性のサポート

Blaze-Persistence(英語) は Spring Data JPA とシームレスに統合され、Spring Data の利便性と生産性のメリットを享受しながら、高度なクエリ機能と最適化機能を活用できます。 JPA Buddy は、エンティティビュー用の Spring Data JPA リポジトリを作成するためのこのフレームワークのサポートを提供しますが、プロジェクトに 関連ライブラリが含まれている場合のみです。

エンティティビュー用の Spring Data JPA リポジトリの作成は、標準のリポジトリ作成ウィンドウから行えます。 エンティティビューを選択すると、親インターフェースのオプションは com.blazebit.persistence.spring.data.repository.EntityViewRepository またはその後継のいずれかのみになります。

blaze-persistence-spring-data-repository.png
import com.blazebit.persistence.spring.data.repository.EntityViewRepository; import com.example.blazepersistence.view.BaseView; public interface BaseViewRepository extends EntityViewRepository<BaseView, Long> { }

Hibernate エンバースのサポート

JPA Buddy を使用すると、JPA リポジトリの作成時にリポジトリに RevisionRepository インターフェースを実装する必要があるかどうかを決定できます。 リポジトリ宣言にエンティティタイプ、エンティティ ID タイプ、およびリビジョン番号タイプが自動的に挿入されます。 例:

@Entity @Table(name = "book") public class Book { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id", nullable = false) private Long id; }
revision-repository

生成されたリポジトリ宣言は次のとおりです。

public interface BookRepository extends JpaRepository<Book, Long>, RevisionRepository<Book, Long, Integer> { }
2026 年 3 月 30 日