| Oracle® Fusion Middleware Oracle TopLink Java Persistence API (JPA)拡張機能リファレンス 12c (12.1.2) E48005-01 |
|
![]() 前 |
![]() 次 |
@Cacheを(JPA @Cachable注釈のかわりに)使用して、EclipseLinkオブジェクト・キャッシュを構成します。デフォルトでは、EclipseLinkは、共有オブジェクト・キャッシュを使用してすべてのオブジェクトをキャッシュします。最適なキャッシングを可能にするために、クラスごとにキャッシュのタイプとオプションを構成できます。
注釈要素
表2-4は、この注釈の要素を示しています。
表2-4 @Cacheの注釈要素
| 注釈要素 | 説明 | デフォルト |
|---|---|---|
|
|
(オプション)この属性を、次の項目を使用するキャッシュのタイプ(
次の永続性ユニット・プロパティで、この属性をオーバーライドできます。
|
|
|
|
(オプション) int値にこの属性を設定して、使用するキャッシュ・サイズ(オブジェクト数)を定義します。 |
|
|
|
(オプション)エンティティのキャッシュ・レベル。
|
|
|
|
(オプション) |
失効なし |
|
|
(オプション)キャッシュされるインスタンスの有効期限が切れる特定の時刻( |
失効なし |
|
|
(オプション) trueのブール値に設定すると、データベースにアクセスするすべての問合せによって、常にキャッシュがリフレッシュされます。 |
|
|
|
(オプション) 注意:
|
|
|
|
(オプション) trueのブール値に設定すると、すべての問合せに対して、キャッシュでのヒットを取得しない一方で、アイデンティティはキャッシュに対して解決することが強制されます。これにより、すべての問合せによってデータベースのヒットが取得されます。 |
|
|
|
(オプション)この属性をキャッシュ・コーディネーション・モード( |
|
|
|
(オプション)データベース変更通知モード。
|
|
使用方法
JPA @Cachable注釈のかわりに@Cache注釈を使用して、キャッシュ構成を追加します。
@Cache注釈は、次のものに定義できます。
@Entity
@MappedSuperclass
継承階層のルート(該当する場合)
継承サブクラスで@Cache注釈を定義すると、注釈は無視されます。@Embeddableで@Cache注釈を定義すると、EclipseLinkは例外をスローします。
EclipseLinkでのキャッシング
Oracle TopLinkキャッシュは、クラスと主キーの値に基づいて最近読み取られたり書き込まれたオブジェクトが格納されるインメモリー・リポジトリです。EclipseLinkでは、次の目的でこのキャッシュが使用されます。
最近読み取られたり書き込まれたオブジェクトを保持し、メモリー内でそれらにアクセスしてデータベースへのアクセスを最小限にすることで、パフォーマンスを向上させます。
ロックと分離レベルを管理します。
オブジェクト・アイデンティティを管理します。
EclipseLinkキャッシュとそのデフォルトの動作の詳細は、次を参照してください。
『Oracle TopLinkの理解』のキャッシュに関する項
『Oracle TopLinkソリューション・ガイド』のオブジェクト・キャッシングに関する項
EclipseLinkには、次のエンティティ・キャッシング注釈が定義されています。
@Cache
EclipseLinkにより、キャッシュを構成するために指定できる多数の永続性ユニット・プロパティも提供されます。これらのプロパティを注釈のかわりに使用したり、注釈を補完できる場合があります。
詳細は、「キャッシング」を参照してください。
例
例2-10では、@Cache注釈を示します。
例2-10 @Cache注釈の使用
...
@Entity
@Cache(
type=CacheType.SOFT, // Cache everything until the JVM decides memory is low.
size=64000 // Use 64,000 as the initial cache size.
expiry=36000000, // 10 minutes
coordinationType=CacheCoordinationType.INVALIDATE_CHANGED_OBJECTS // if cache coordination is used, only send invalidation messages.
)
public class Employee {
...
}
例2-11に、eclipselink-orm.xmlファイルのこの注釈を使用する方法を示します。
例2-11 <cache> XMLの使用
<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 type="SOFT" size="64000" expiry="36000000" coordination-type="INVALIDATE_CHANGED_OBJECTS"/>
</entity>
</entity-mappings>
また、ここに示すように、永続性ユニット・レベル(persistence.xmlファイル)でキャッシング・プロパティを指定することもできます。
例2-12 persistence.xmlでのキャッシングの指定
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_2_0.xsd"
version="2.0">
<persistence-unit name="acme" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="eclipselink.cache.shared.default" value="false"/>
<property name="eclipselink.cache.shared.Employee" value="true"/>
<property name="eclipselink.cache.type.Employee" value="SOFT"/>
<property name="eclipselink.cache.size.Employee" value="64000"/>
</properties>
</persistence-unit>
</persistence>
関連項目
詳細は、次を参照してください。
『Oracle TopLinkの理解』のキャッシュに関する項
『Oracle TopLinkソリューション・ガイド』のオブジェクト・キャッシングに関する項