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

前
 
次
 

@Cache

@Cacheを(JPA @Cachable注釈のかわりに)使用して、EclipseLinkオブジェクト・キャッシュを構成します。デフォルトでは、EclipseLinkは、共有オブジェクト・キャッシュを使用してすべてのオブジェクトをキャッシュします。最適なキャッシングを可能にするために、クラスごとにキャッシュのタイプとオプションを構成できます。

注釈要素

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

表2-4 @Cacheの注釈要素

注釈要素 説明 デフォルト

type

(オプション)この属性を、次の項目を使用するキャッシュのタイプ(org.eclipse.persistence.annotations.CacheType列挙型)に設定します。

  • FULL

  • WEAK

  • SOFT

  • SOFT_WEAK

  • HARD_WEAK

  • CACHE (非推奨)

  • NONE (非推奨、かわりにisolation=ISOLATEDを使用)

次の永続性ユニット・プロパティで、この属性をオーバーライドできます。

  • eclipselink.cache.type.<ENTITY>

  • eclipselink.cache.type.default

CacheType.SOFT_WEAK

size

(オプション) int値にこの属性を設定して、使用するキャッシュ・サイズ(オブジェクト数)を定義します。

100

isolation

(オプション)エンティティのキャッシュ・レベル。

  • shared: エンティティ・インスタンスは、EntityManagerFactory/ServerSessionレベル内でキャッシュされます。

  • isolated: エンティティとそのデータは、共有キャッシュに格納されるのではなく、永続性コンテキスト/UnitOfWorkまたはIsolatedClientSessionに分離されます。

  • protected: エンティティの状態情報は共有キャッシュにキャッシュされますが、エンティティ・インスタンスは共有されません。

shared

expiry

(オプション)int値(ミリ秒)で指定し、キャッシュされるインスタンスの失効が一定期間後に有効になるようにします。その後、キャッシュに対して実行される問合せは、コピーがリフレッシュされるように、データベースに強制的に戻されます。

失効なし

expiryTimeOfDay

(オプション)キャッシュされるインスタンスの有効期限が切れる特定の時刻(org.eclipse.persistence.annotations.TimeOfDay)。その後、キャッシュに対して実行される問合せは、コピーがリフレッシュされるように、データベースに強制的に戻されます。

失効なし

alwaysRefresh

(オプション) trueのブール値に設定すると、データベースにアクセスするすべての問合せによって、常にキャッシュがリフレッシュされます。

false

refreshOnlyIfNewer

(オプション) trueのブール値に設定すると、問合せがデータベースから受け取るデータがキャッシュのデータよりも新しい(オプティミスティック・ロック・フィールドによって判別)場合にのみ、データベースにアクセスするすべての問合せによって、キャッシュがリフレッシュされます。

注意:

  • このオプションは、alwaysRefreshなどの他のリフレッシュ・オプションのいずれかがすでに有効になっている場合にのみ適用されます。

  • この機能を適用するには、バージョン・フィールドが必要となります。

false

disableHits

(オプション) trueのブール値に設定すると、すべての問合せに対して、キャッシュでのヒットを取得しない一方で、アイデンティティはキャッシュに対して解決することが強制されます。これにより、すべての問合せによってデータベースのヒットが取得されます。

false

coordinationType

(オプション)この属性をキャッシュ・コーディネーション・モード(org.eclipse.persistence.annotations.CacheCoordinationType列挙型)に設定します。永続性ユニット・プロパティでもキャッシュ・コーディネーションを構成する必要があります。「キャッシング」を参照してください。

SEND_OBJECT_CHANGES

databaseChangeNotificationType

(オプション)データベース変更通知モード。

  • Invalidate: データベース変更イベントをオブジェクトに対して受信した場合に、TopLinkキャッシュを無効にします。

  • None: データベース変更イベントは処理されません。永続性ユニット/セッションにもデータベース・イベント・リスナーを構成する必要があります。

INVALIDATE


使用方法

JPA @Cachable注釈のかわりに@Cache注釈を使用して、キャッシュ構成を追加します。

@Cache注釈は、次のものに定義できます。

継承サブクラスで@Cache注釈を定義すると、注釈は無視されます。@Embeddable@Cache注釈を定義すると、EclipseLinkは例外をスローします。

EclipseLinkでのキャッシング

Oracle TopLinkキャッシュは、クラスと主キーの値に基づいて最近読み取られたり書き込まれたオブジェクトが格納されるインメモリー・リポジトリです。EclipseLinkでは、次の目的でこのキャッシュが使用されます。

EclipseLinkキャッシュとそのデフォルトの動作の詳細は、次を参照してください。