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

前
 
次
 

@CacheIndex

@CacheIndexを使用して、キャッシュされる索引を定義します。キャッシュ索引は、キャッシングが有効なときにのみ使用されます。

注釈要素

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

表2-5 @CacheIndexの注釈要素

注釈要素 説明 デフォルト

columnNames

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


updateable

(オプション)索引付きのフィールドが更新可能かどうかを指定します。

trueの場合、各更新またはリフレッシュでオブジェクトを再度索引付けします。

true


使用方法

キャッシュ索引により、索引付きのフィールドで問合せするときに、singleResult問合せでキャッシュ・ヒットを取得できます。すべてのオブジェクトがメモリー内にあるかどうかは不明なため(キャッシュ使用率の問合せヒントが使用されない場合)、resultList問合せではキャッシュ・ヒットを取得できません。

索引は、一意である必要があります。一意でない場合、最初の索引付きオブジェクトが戻されます。

エンティティ・クラスまたは属性で@CacheIndexを使用できます。属性で定義される場合、列がデフォルトに設定されます。

例2-13に、@CacheIndex注釈の使用例を示します。

例2-13 @CacheIndex注釈の使用

@Entity
@CacheIndex(columnNames={"F_NAME", "L_NAME"}, updateable=true)
public class Employee {
  @Id
  private long id;
  @CacheIndex
  private String ssn;
  @Column(name="F_NAME")
  private String firstName;
  @Column(name="L_NAME")
  private String lastName;
}

例2-14に、eclipselink-orm.xmlファイルの<cache-index> XML要素の使用例を示します。

例2-14 <cache-index> XMLの使用

<?xml version="1.0"?>
<entity-mappings
  xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/orm"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.eclipse.org/eclipselink/xsds/persistence/orm http://www.eclipse.org/eclipselink/xsds/eclipselink_orm_2_4.xsd"
  version="2.4">
    <entity name="Employee" class="org.acme.Employee" access="FIELD">
        <cache-index updateable="true">
            <column-name>F_NAME</column-name>
            <column-name>L_NAME</column-name>
        </cache-index>
        <attributes>
            <id name="id"/>
            <basic name="ssn">
                <cache-index/>
            </basic>
            <basic name="firstName">
                <column name="F_NAME"/>
            </basic>
            <basic name="lastName">
                <column name="L_NAME"/>
            </basic>
        </attributes>
    </entity>
</entity-mappings>

例2-15に、キャッシュ索引を使用する問合せの例を示します。

例2-15 索引問合せのキャッシング

Query query = em.createQuery("Select e from Employee e where e.firstName = :firstName and e.lastName = :lastName");
query.setParameter("firstName", "Bob");
query.setParameter("lastName", "Smith");
Employee employee = (Employee)query.getSingleResult();

関連項目

詳細は、次を参照してください。