WSJPA ObjectCache の自動プリロード
WebSphere® Java™ Persistence API (WSJPA) を OpenJPA へ拡張することにより、 特定の ユース・ケースで、パフォーマンスを向上させることができる読み取り専用の ObjectCache が提供されます。デフォルトでは、キャッシュ内のデータは LAZY メソッドでロードされます。つまり、個別のエンティティーが、アプリケーションで要求されたときにメモリーにロードされます。ただし、最初からすべてのエンティティーをロードする場合は、ObjectCache 内に構成された、データベースからのすべてのエンティティーをプリロードするようにアプリケーション・サーバーを構成できます。ObjectCache をプリロードすると、LAZY メソッドで ObjectCache をロードした場合には制限されるエンティティーをキャッシュに入れることができます。この構成は、JPA 2.0 仕様レベルで WSJPA を使用する場合にのみサポートされます。
このタスクについて

- ObjectCache 内に入れられるように構成されたエンティティーについて、ObjectCache ですべての EAGER 関係を構成する必要もあります。これにより、どの LAZY 関係も使用可能ではなくなります。
- アプリケーション・サーバーによる ObjectCache のプリロード時に、エンティティーはデータベースからフェッチされます。アプリケーション・サーバーは、他のメソッドでロードされたエンティティーを ObjectCache に追加しません。
- オブジェクト・グラフが複雑な場合は、キャッシュの自動ロードには、非常に長い時間がかかる可能性があります。
- このフィーチャーを使用可能にする際には、すべての使用可能メモリーが消費される可能性があるため、注意してください。この機能が動作するには、JPA 環境で、メモリー内に完全なデータ・セットが用意されている必要があります。
プリロード・プロセスが完了すると、以下のような通知メッセージが表示されます。
Successfully loaded the ObjectCache with [...] Entities in [...] seconds.
手順
例
- 以下のプロパティーは、アプリケーション・サーバーによる最初の EntityManager の作成時に ObjectCache が自動的にロードされるように指定します。
<property name=" wsjpa.ObjectCache" value=”true(Types=com.ibm.wsjpa.Foo; com.ibm.wsjpa.Bar, MaxSize=auto)”/>
- 以下のプロパティーは、アプリケーション・サーバーによる最初の EntityManager の作成時に ObjectCache が自動的にロードされ、20 分ごとに ObjectCache が再ロードされるように指定します。
<property name=" wsjpa.ObjectCache" value=”true(Types=com.ibm.wsjpa.Foo; com.ibm.wsjpa.Bar, MaxSize=auto, EvictionSchedule=+20)”/>