IntelliJ IDEA 2026.1 Help

エンティティデザイナー

JPA Buddy をインストールすると、次のものが見つかります。

  1. エディター ツールバー

  2. JPA デザイナー ツールウィンドウ

JPA Buddy ビジュアルツール

デザイナー設定JPA デザイナー の外観をカスタマイズできます。 他のパネルと一緒に表示したり、個別のパネルとして表示したり、標準の IntelliJ IDEA パネルに統合したり、完全に非表示にしたりできます。

永続化ツールウィンドウ

以前 JPA 構造 で利用可能だった機能のほとんどは、現在 永続化ツールウィンドウでも利用できます。 さらに、JPA Buddy では、 永続化 ツールウィンドウに次の機能が追加されています。

  • JPA エンティティの作成、Java または Kotlin クラスからの JPA エンティティの生成

  • Spring Data JPA リポジトリと Spring Data 射影を作成する

  • JPA エンティティに基づいて DTO を作成する

  • 各エンティティの DTO と射影を表示する

永続化ツールウィンドウ

JPA パレット

jpa-palette

JPA Palette は、現在のコンテキストに適したコードを生成することを目的としています。エンティティの場合は属性やインデックス、リポジトリの場合はクエリ メソッドなどを生成できます。 エンティティであれば属性やインデックス、リポジトリであればクエリ メソッドなどが該当します。

JPA パレットには、次の機能のコード生成ウィザードが用意されています。

関連付けのパフォーマンスに関するヒント

Hibernate には多くの関係マッピングタイプがありますが、すべてが同じように効率的であるわけではありません。

関連付けの作成中に、JPA Buddy は、現在の構成が非効率であり、パフォーマンスの問題を引き起こす可能性がある理由を簡単に説明します。 詳細 ボタンを使用して表示します。

learn-more

また、JPA Buddy が提案する最適化を適用することもできます。 可能なオプションを含むドロップダウンリストから選択するだけです。

suggested-optimizations

JPA インスペクター

jpa-inspector

JPA Inspector は、属性、インデックス、クエリなどの既存のコードを編集するように設計されています。

JPA Inspector を使用すると、JPA エンティティと属性をその中で構成できます。 構成する必要がある要素をクリックし、必要なプロパティを変更します。

Hibernate の検証

Hibernate 検証を含むプロジェクトの場合、選択した属性に適用できる検証を含むセクションが表示されます。

エディターツールバー

エディターツールバーには、ファイルの内容に応じて関連するアクションが含まれています。 これはエディターウィンドウの上部にあります。

エンティティ生成

新しい JPA エンティティを作成するには、目的のフォルダーを右クリックし、新規 -> JPA エンティティ (1) を選択します。 また、「JPA 構造 (2)」タブから新しいエンティティを作成することもできます。

jpa-structure-create-new-entity

その後、次のウィンドウが表示されます。

new-entity

言語サポート

JPA Buddy は Java(英語)Kotlin(英語) の両方をサポートします。 JPA Buddy がプロジェクト内で Kotlin 依存関係(英語)を検出すると、追加のオプションが 新規エンティティ ウィンドウに表示され、言語を選択できます。

new-entity-language-choose

また、「設定」->「ツール」->「JPA Buddy」->「エンティティ宣言」では、 新規エンティティ ウィンドウでデフォルトで選択する言語を選択できます。

settings-scaffolding-language

ID とその生成戦略

JPA 仕様によれば、エンティティ定義には ID 属性が必要です。 JPA Buddy を使用すると、この属性を生成し、タイプ (1) と生成戦略 (2) を選択できます。 また、 シーケンス 生成戦略 (3) に使用するシーケンスを指定することもできます。

sequence-id.jpeg

埋め込みエンティティを ID として使用する場合、JPA Buddy はプロジェクト内に存在する @Embeddable エンティティのリストを提供します。

embeddable-entity-as-id

また、JPA パレット (1)、エディターツールバー (2)、またはクイックフィックス (Alt+Enter) (3) を使用して ID 属性を生成することもできます。

id-generation

その後、より包括的なカスタマイズオプションを含むウィザードが表示されます。

new-id-attribute

以下の生成された ID の例を参照してください。

@Id @GeneratedValue( strategy=GenerationType.SEQUENCE, generator = "owners_seq" ) @SequenceGenerator( name = "owners_seq", sequenceName = "SEQ_OWNER", initialValue = 5, allocationSize = 10 ) @Column(name = "id", nullable = false) private Long id;

MappedSuperclass に抽出

アプリケーションが成長し、JPA モデルが進化するにつれて、特定の属性が複数のエンティティ間で共通しており、コードをより適切に構成するために @MappedSuperclass に抽出する必要があることがわかる場合があります。 JPA Buddy は、メソッドと属性を JPA アノテーションとともに MappedSuperclass に簡単に抽出し、適切に設計されたエンティティ階層を構築できます。

これを実現するには、エンティティの属性をクリックしてから「エンティティデザイナー」タブに移動し、「アクション」メニューにアクセスするか、 Alt+Enter を押して「コンテキストアクション」メニューを開きます。 そこから、以下に示すように MappedSuperclass に抽出 を選択します。

ed-extract-to-mappedsuperclass.png

次に、MappedSuperclass に含める必要な属性とメソッドを選択します。 JPA Buddy は、抽出された属性に既存のアノテーションを自動的に適用します。 メソッドで使用される属性も同様に含まれることに注意してください。

extract-to-mappedsuperclass.png

上記のパラメーターを適用すると、ペットエンティティは、抽出された属性を削除して、次の生成されたクラスから拡張されます。

//Getters and setters are omitted for brevity @MappedSuperclass public class GenericPet { @Id @Column(name = "id", nullable = false) private Integer id; @Column(name = "name", length = Integer.MAX_VALUE) private String name; @Column(name = "birth_date") private LocalDate birthDate; @ManyToOne(fetch = FetchType.LAZY, optional = false) @JoinColumn(name = "type_id", nullable = false) private Type type; @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) return false; Pet pet = (Pet) o; return getId() != null && Objects.equals(getId(), pet.getId()); } @Override public int hashCode() { return getClass().hashCode(); } }

Lombok

インスペクション

Lombok (英語) は、Java コードを簡潔かつクリーンにする優れたツールです。 ただし、Lombok を JPA で使用する場合は、いくつか考慮すべき点があります。 JPA Buddy は、インスペクションのセットを使用して JPA エンティティで Lombok を使用するときに、ベストプラクティスに従うのに役立ちます。

JPA エンティティでは @EqualsAndHashCode および @Data を使用しないでください。

エンティティはその性質上変更可能であるため、エンティティに equals() および hashCode() を実装するのは簡単な作業ではありません。 Lombok によって提供される実装は JPA エンティティにはあまり適しておらず、コレクションや遅延属性の誤った読み込みで問題が発生する可能性があります。

@ToString を使用する場合は常に遅延属性を除外します

デフォルトでは、 @ToString にはすべてのオブジェクトフィールドが含まれます。 このようなアプローチは、JPA エンティティに望ましくない副作用 (遅延属性が誤ってロードされる) をもたらす可能性があります。 これは、アプリケーションのパフォーマンスに簡単に悪影響を与え、トランザクション外で発生した場合は LazyInitializationException を引き起こす可能性があります。

@Builder または @AllArgsConstructor を持つエンティティに @NoArgsConstructor を追加することを忘れないでください

これらは独自のコンストラクターを導入するため、コンパイラーはデフォルトのコンストラクターを生成しません。 仕様に従って、すべての JPA エンティティには引数のないコンストラクターが必要です。

no-args-constructor

上記のルールに従うことがなぜそれほど重要なのかについて詳しくは、 記事(英語)を参照してください。

アノテーション

Lombok を含むプロジェクトの場合、JPA インスペクターには、エンティティに追加できるアノテーションを含むセクションが表示されます。

jpa-inspector-lombok-annotations

設定

JPA Buddy は、Lombok アノテーションを使用して新しいエンティティと属性を生成する機能を提供します。 新しいエンティティまたは属性を作成するときに追加する属性を構成するには、エンティティ宣言ウィンドウの下部で必要なオプションを選択します。

lombok-settings

Hibernate

型と JPA コンバーター

JPA Buddy は、JPA インスペクターを介して JPA コンバーターまたは Hibernate カスタムタイプのブランクを生成できます。

また、JPA 構造経由で作成することもできます。 追加 をクリックし、 JPA コンバーター または Hibernate カスタムタイプ を選択します。

jpa-structure-jpa-converter

「カスタムタイプの作成」ウィンドウでは、クラス名、エンティティ属性タイプ、データベース列タイプを構成できます。

JPA コンバーターの場合、自動適用するかどうかを定義できます。

create-custom-type-jpa

Hibernate カスタム型の場合、パラメーターに基づいて型の動作を変更できるかどうかを設定できます。

create-custom-type-hibernate

生成された Hibernate カスタムタイプの例を次に示します。

public class BooleanConverter extends AbstractSingleColumnStandardBasicType<Boolean> { public BooleanConverter() { super(new CharTypeDescriptor(), new BooleanConverterDescriptor()); } @Override public String getName() { return "BooleanConverter"; } @Override public Object resolve(Object value, SharedSessionContractImplementor session, Object owner, Boolean overridingEager) throws HibernateException { return null; } }

イベントシステム

Hibernate イベントシステムは、変更をログに記録またはブロードキャストしたり、元に戻せない操作の前に追加のチェックを実行したり、データの状態が変わったときにビジネスロジックをフックしたりできる強力なツールです。 これらすべての場合に備えて、Hibernate はイベントリスナーを提供し、JPA Buddy は数回のクリックで scaffold できます。

Envers サポート

JPA デザイナーを使用して、JPA エンティティとそのフィールドの両方に @Audited アノテーションを追加します。

envers-jpa-designer

リビジョンエンティティ

Hibernate は、監査対象エンティティのすべてのバージョンを別のテーブルに保存します。 デフォルトでは、新しいリビジョンごとにリビジョン番号とタイムスタンプが割り当てられます。 カスタムリビジョンエンティティを作成する必要があり、 @RevisionEntity でアノテーションが付けられたエンティティがない場合は、JPA Buddy にそのための便利なダイアログが用意されています。

revision-entity-action

リビジョンエンティティの作成ウィザードでは、JPA Buddy を使用して以下を指定できます。

  1. 親エンティティ (たとえば、 DefaultRevisionEntity または DefaultTrackingModifyingEntitiesRevisionEntity)。

  2. テーブルの名前。

  3. リビジョンリスナーを作成するか、既存のものを選択するか。

  4. リビジョン番号とタイムスタンプの必須フィールド (親が指定されていない場合)。

  5. エンティティが保存されるソースルートとパッケージ。

create-revision-entity-wizard

指定された構成により、次のコードが生成されます。

public class CustomRevisionEntityListener implements RevisionListener { @Override public void newRevision(Object revisionEntity) { CustomRevisionEntity customRevisionEntity = (CustomRevisionEntity) revisionEntity; // TODO ("Not yet implemented") } } @Entity @Table(name = "revinfo") @RevisionEntity(CustomRevisionEntityListener.class) public class CustomRevisionEntity { @Id @RevisionNumber @Column(name = "id", nullable = false) private int id; @RevisionTimestamp @Column(name = "timestamp", nullable = false) private long timestamp; //getters and setter are omitted }

インスペクション

JPA Buddy は、コーディング中に役立つ多くのインスペクションを提供します。 デフォルトでは、すべてのインスペクションがすべてのスコープで有効になっており、警告の重大度が設定されています。 提供されているインスペクションの完全なリストは、設定 -> エディター -> インスペクション -> JPA Buddy で表示および構成できます。

インスペクション

設定

命名テンプレート

Java コードのスタイルはプロジェクトごとに異なる場合があります。 また、外部データベースを操作する場合は、テーブルや列などを JPA エンティティにマッピングするときに、そのテーブルや列などの命名規則に従う必要があります。 JPA Buddy は、新しいエンティティや属性に自動的に適用される名前付けテンプレートの柔軟な構成を提供します。

デフォルトでは、Spring Boot は SpringPhysicalNamingStrategy を使用して物理的な命名戦略を構成します。 この実装は Hibernate 4 と同じテーブル構造を提供します。すべてのドットはアンダースコアに置き換えられ、キャメルケースもアンダースコアに変換されます。 さらに、デフォルトですべてのテーブル名は小文字で生成されます。 例えば、下記のどちらのエンティティ 宣言でも、実際の DB テーブルの名前は pet_type になります。

@Entity public class PetType { // fields omitted }

または

@Entity @Table(name = "PetType") public class PetType { // fields omitted }

定数の生成

保守性はあらゆるプロジェクトの重要な側面であり、JPA プロジェクトには、JPQL またはネイティブクエリステートメント、属性への参照、クエリ、バインドパラメーター名を含む多数の文字列が含まれることがよくあります。 ベストプラクティスによれば、永続層を適切に構造化する方法の 1 つは定数です。 これについては、 Thorben Janssen(英語) の記事で学ぶことができます。

JPA Buddy は、エンティティ、テーブル、列名の定数生成を提供します。 定数を配置する場所を選択することもできます。

constants-generation

デザイナー設定

JPA Buddy には、デフォルトモードでは機能豊富なツールウィンドウが付属しています。 ただし、画面が小さいユーザーの場合、ツールウィンドウがかなりの水平スペースを占有する可能性があります。 このような場合、JPA Buddy はオプションとして ミニマルモードを提供します。 さらに、JPA Buddy には、主要な視覚要素の外観を微調整するための設定が用意されています。

designer-settings
2026 年 3 月 30 日