WSJPA ObjectCache の自動プリロード

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

このタスクについて

ObjectCache の自動ロードを使用可能にすると、JPA 環境は、単一のエンティティーがアプリケーションで要求されるのを待つのではなく、ObjectCache を自動的にサイズ変更してプリロードします。 アプリケーション・サーバーが最初の EntityManager を作成すると、プリロード・プロセスが開始し、アプリケーション・サーバーは、ObjectCache 内に構成された、データベースからのすべてのエンティティーをプリロードします。このプリロード・プロセスは、別個の処理スレッドで非同期的に行われます。
トラブルの回避 (Avoid trouble) トラブルの回避 (Avoid trouble): 以下の情報に注意してください。
  • ObjectCache 内に入れられるように構成されたエンティティーについて、ObjectCache ですべての EAGER 関係を構成する必要もあります。これにより、どの LAZY 関係も使用可能ではなくなります。
  • アプリケーション・サーバーによる ObjectCache のプリロード時に、エンティティーはデータベースからフェッチされます。アプリケーション・サーバーは、他のメソッドでロードされたエンティティーを ObjectCache に追加しません。
  • オブジェクト・グラフが複雑な場合は、キャッシュの自動ロードには、非常に長い時間がかかる可能性があります。
  • このフィーチャーを使用可能にする際には、すべての使用可能メモリーが消費される可能性があるため、注意してください。この機能が動作するには、JPA 環境で、メモリー内に完全なデータ・セットが用意されている必要があります。
gotcha
プリロード・プロセスが完了すると、以下のような通知メッセージが表示されます。
Successfully loaded the ObjectCache with [...] Entities in [...] seconds.

手順

  1. ObjectCache で MaxSize プロパティーを auto に設定します。 例えば、次のエントリーを .properties ファイルに挿入します。
    <property name="wsjpa.ObjectCache" value=”true(Types=com.ibm.wsjpa.Foo; com.ibm.wsjpa.Bar, MaxSize=auto)”/>
    MaxSize プロパティーのデフォルト値は 1000 ですが、MaxSize プロパティーを auto に設定すると、プリロード・メカニズムが使用可能になります。
  2. オプション: EvictionSchedule プロパティーに設定した値を確認します (このプロパティーについては、パフォーマンスを向上させるための WSJPA ObjectCache の構成のトピックの説明を参照)。 EvictionSchedule プロパティーを MaxSize=auto と組み合わせて使用すると、EvictionSchedule プロパティーは、デフォルトの動作とは異なった方法で実装され、構成されたスケジュールで ObjectCacheをクリアするのではなく、ObjectCache は自動的に再ロードされます。

以下の例で、自動的にロードされるように ObjectCache を構成する方法を示します。
  • 以下のプロパティーは、アプリケーション・サーバーによる最初の 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)”/>

トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tejb_jpaautoloadcache
ファイル名:tejb_jpaautoloadcache.html