ヘッダーをスキップ
Oracle® Fusion Middleware Oracle TopLink Java Persistence API (JPA)拡張機能リファレンス
12c (12.1.2)
E48005-01
  目次へ移動
目次

前
 
次
 

@Index

索引は、表に対して定義されるデータベース構造であり、これにより一連の列に対する問合せと検索のパフォーマンスが向上します。eclipselink-orm.xmlディスクリプタ内のコードまたは<index>要素で@Index注釈を使用して、表に索引を作成します。

エンティティまたは属性で索引を定義できます。エンティティの場合、索引に対して一連の列を定義する必要があります。

索引の作成はデータベース固有です。一部のデータベースは索引をサポートしていない可能性があります。ほとんどのデータベースでは、主キーと外部キーの列が自動的に索引付けされます。一部のデータベースでは、高度な索引DDLオプションがサポートされています。より高度な索引DDLを作成するために、DDLスクリプトまたはネイティブ問合せを使用できます。

注釈要素

表2-26は、この注釈の要素を示しています。

表2-26 @Indexの注釈要素

注釈要素 説明 デフォルト

java.lang.String catalog

(オプション) INDEXのカタログ。

デフォルトのカタログ

java.lang.String[] columnNames

(フィールド/メソッドに注釈が付けられている場合は不要)索引を定義する一連の列を指定します。

エンティティの場合は、なし。

属性の場合は、その属性の列。

java.lang.String name

(オプション) INDEXの名前。

<table>_<column>_INDEX (ただし、名前を指定する必要があります)

java.lang.String schema

(オプション) INDEXのスキーマ。

デフォルトのスキーマ

java.lang.String table

(オプション)索引を定義する表。デフォルトはエンティティのプライマリ表です。

エンティティのプライマリ表。

boolean unique

(オプション)索引が一意か、または非一意であるかを指定します。

false


使用方法

@Index注釈を使用して、問合せでよく使用される任意の属性または列の索引を作成します。

この例では、に1つ、に1つ、およびに複数列の索引、という3つの索引を定義します。

例2-48 @Index注釈の使用

@Entity
@Index(name="EMP_NAME_INDEX", columns={"F_NAME","L_NAME"})
public class Employee{
    @Id
    private long id;
    @Index
    @Column(name="F_NAME")
    private String firstName;
    @Index
    @Column(name="L_NAME")
    private String lastName;
    ...
}

次の例に示すように、<index>を使用してeclipselink-orm.xmlディスクリプタに索引を作成することもできます。<column>サブ要素を使用して列を定義します。@Index注釈でサポートされるすべての属性は、<index>要素でもサポートされます。

例2-49 <index> XMLの使用

<index name="EMP_NAME_INDEX" table="EMPLOYEE" unique="true">
    <column>F_NAME</column>
    <column>L_NAME</column>
</index>

関連項目

詳細は、次のドキュメントを参照してください。