web-dev-qa-db-ja.com

JPA:インデックス列の定義

重複の可能性:
JPAを使用してインデックス(一意でないキー)を指定する

検索パフォーマンスを向上させるために、エンティティ列にインデックスを定義する方法はありますか? hibernateが@Indexと@IndexColumnを提供するのを見ましたが、それを行うためのJPAの方法を探しています。

ありがとう

これが私のエンティティの例です。名前列にインデックスを付ける必要があります

@Entity
@Table(name = "MY_TABLE")
public class MyEntity {
    private long id;
    private String name;
    private String sourceInfo;

  ...
9
lili

いいえ、jpaはインデックスを定義または作成する機能を提供していません。いくつかの(私には知られていない)理由で、JPAで一意のインデックスを作成することしかできません。

Hibernateを使用していない場合、またはこれらのアノテーションを本当に使用したくない場合は、それに応じてデータベースを出力または更新するためにアノテーションとプロセッサを構築する必要がありますが、それはそれほど簡単ではないと思います(そしてそれは間違いなくです、非標準)

編集

Hibernateでインデックスを定義する方法の例を次に示します

@org.hibernate.annotations.Table(
   appliesTo = "table_name",
   indexes = {
      @Index(name="single_column_index", columnNames = "col"),
      @Index(name="multi_column_index", columnNames = {"col1", "col2"}),
   }
)
28
Augusto

OpenJPAでは、非標準のアノテーションを指定して、プロパティのインデックスを定義できます。

詳細は ここ です。

2
expert

標準のJPAアノテーションはありません。 (JPAはDDL生成さえ必要としません)。

EclipseLinkの場合 @ Indexページを参照

2
James