パフォーマンスを向上させるための WSJPA ObjectCache の構成
WebSphere® Java™ Persistence API (WSJPA) を OpenJPA へ拡張することにより、 特定の ユース・ケースで、パフォーマンスを向上させることができる読み取り専用のオブジェクト・キャッシュが提供されます。この構成は、JPA 2.0 仕様レベルで WSJPA を使用する場合にのみサポートされます。
このタスクについて
WSJPA ObjectCache オブジェクトを実装すると、基本のパーシスタント・フィールドへのアクセスや、単一方向関係の読み取り専用タイプへの永続化など、静的かつ読み取り専用の方法で使用されるデータ・セットを持つアプリケーションのパフォーマンスが向上します。 WSJPA ObjectCache は、 EntityManagerFactory オブジェクト・レベルで作動する読み取り専用エンティティーの非分散型キャッシュです。 これらのキャッシュ・インスタンスは、 Java 仮想マシン (JVM) のすべての EntityManager オブジェクトによって共有されますが、インスタンスはどれによっても管理されません。 このフィーチャーが有効な場合、アプリケーションが OpenJPA DataCache オブジェクトおよびデータベースにアクセスする前に ObjectCache オブジェクトが検査され、パーシスタント・オブジェクトがデータベースからロードされて、 OpenJPA オブジェクト・キャッシュに格納されます。 さらに、ObjectCache 実装を OpenJPA DataCache および QueryCache のフィーチャーと合わせて使用することで、パフォーマンスをさらに向上させることができます。
以下の条件および制約に注意してください。
オブジェクト・キャッシュを単一 JVM 環境で使用可能にし、
このキャッシュに含まれるタイプを指定し、その最大エレメント・サイズを設定し、
タイムアウト値を指定します。- アプリケーションの観点から厳密に読み取り専用のタイプを組み込んでください。
- 読み取り専用タイプを以下の操作に渡すと、
UnsupportedOperationException のエラー・メッセージが生成されます。
- 読み取り専用エンティティーの EntityManager.merge(…) への引き渡し。
- 読み取り専用エンティティーの EntityManager.persist(…) への引き渡し。
- 読み取り専用エンティティーの EntityManager.remove(…) への引き渡し。
- WebSphere JPA ランタイムによって戻された読み取り専用タイプで setter メソッドを呼び出すと、UnsupportedOperationException エラー・メッセージが生成されます。
- 読み取り専用タイプを以下の操作に渡すと、
UnsupportedOperationException のエラー・メッセージが生成されます。
- ObjectCache に含まれるタイプは、OpenJPA DataCache に入れることができる べきではありません。OpenJPA L2 キャッシュ (openjpa.DataCache) によってキャッシュ可能なタイプを AND 演算しないでください。 ObjectCache は JPA 2.0 仕様で定義された 第 2 レベルのキャッシュと混同しないでください。 タイプを AND 演算すると、EntityManager オブジェクトの作成時に例外が発生します。
- 基本フィールドのみを組み込んでください。そうでないと、 EntityManager オブジェクトの作成時に例外が発生します。
- 読み取り専用エンティティーを EntityManager.contains(…) に渡すと、それが検索/照会操作から返された直後でも常に FALSE が戻されます。
