プロパティー・ファイルを指定することで、Hibernate キャッシュ・プラグインを使用する
キャッシュを使用可能にできます。
始める前に
- 使用する JPA キャッシュ・プラグイン・トポロジーを決定する必要があります。各構成の詳細については、JPA レベル 2 (L2) キャッシュ・プラグインを参照してください。
- JPA API を使用するアプリケーションが必要です。WebSphere eXtreme
Scale API を使用して
JPA のデータにアクセスする必要がある場合は、JPA ローダーを使用してください。詳しくは、JPA ローダーの構成を参照してください。
手順
- WebSphere Application Server を使用する場合、Java アーカイブ (JAR) ファイルを
構成内の適切な場所に配置します。
Hibernate キャッシュ・プラグインは、oghibernate-cache.jar ファイル内に
パッケージ化されていて、was_root/optionalLibraries/ObjectGrid ディレクトリーにインストールされます。
Hibernate キャッシュ・プラグインを使用するには、Hibernate ライブラリーに oghibernate-cache.jar ファイルを
組み込む必要があります。例えば、使用するアプリケーションに Hibernate ライブラリーを組み込む場合は、oghibernate-cache.jar ファイルも
組み込まなければなりません。共有ライブラリーを定義して Hibernate ライブラリーを組み込む場合は、oghibernate-cache.jar ファイルを
その共有ライブラリー・ディレクトリーに追加しなければなりません。
eXtreme Scale は、cglib.jar ファイルを
WebSphere Application Server 環境にインストールしません。
cglib.jar に依存する既存アプリケーションまたは共有ライブラリー (Hibernate など) がある場合、cglib.jar ファイルを見つけ、クラスパスに組み込んでください。 例えば、アプリケーションに Hibernate ライブラリーのすべての JAR ファイルが組み込まれていながら、Hibernate で使用可能な cglib.jar ファイルが除外されている場合、Hibernate の cglib.jar ファイルをアプリケーションに組み込む必要があります。
- persistence.xml ファイル内のプロパティーを設定して、Hibernate キャッシュ・プラグインを構成します。
persistence.xml ファイル内のプロパティーを設定する構文は次のとおりです。
<property name="hibernate.cache.provider_class"
value="com.ibm.websphere.objectgrid.hibernate.cache.ObjectGridHibernateCacheProvider" />
<property name="hibernate.cache.use_query_cache" value="true"/>
<property name="objectgrid.configuration" value="<property>=<value>,..." />
<property name="objectgrid.hibernate.regionNames" value="<regionName>,.." />
- hibernate.cache.provider_class: provider_class プロパティーの値は com.ibm.websphere.objectgrid.hibernate.cache.ObjectGridHibernateCacheProvider クラスです。
- hibernate.cache.use_query_cache: 照会キャッシュを使用可能にするには、use_query_cache プロパティーの値を true に設定します。
注: 照会キャッシュを使用可能にできるのは、組み込みトポロジーと組み込みイントラドメイン・トポロジーの場合のみです。
- objectgrid.configuration: objectgrid.configuration プロパティーを使用して、eXtreme Scale キャッシュ構成プロパティーを指定します。
これにはデータ・グリッドに断片を配置する方法を指定する ObjectGridType 属性も含まれます。
名前が競合する可能性をなくすため、固有の ObjectGridName プロパティー値を指定する必要があります。他の eXtreme Scale キャッシュ構成プロパティーはオプションです。
後書きキャッシングを使用可能にするには、次のように objectgrid.configuration プロパティーの
後書き属性を使用します。後書きキャッシングを使用可能にすると、データがキャッシュに
フラッシュされたとき、更新は writeBehindInterval 条件または writeBehindMaxBatchSize 条件が
満たされるまで、JVM スコープのデータ・ストレージに一時的に保管されます。
writeBehind=true, writeBehindInterval=5000, writeBehindPoolSize=10, writeBehindMaxBatchSize=1000
重要: writeBehind が使用可能でない場合、他の後書き構成設定は無視されます。
objectgrid.configuration プロパティーに
設定できる値の詳細については、JPA キャッシュ構成プロパティーを参照してください。
- objectgrid.hibernate.regionNames: objectgrid.hibernate.regionNames プロパティーは
オプションですが、eXtreme Scale キャッシュの初期化後に
regionNames の値を定義する場合は指定する必要があります。regionName にマップされるエンティティー・クラスで、そのエンティティー・クラスが persistence.xml ファイルに指定されていないか、または Hibernate マッピング・ファイルに含まれていない例を考えます。さらに、これにエンティティー・アノテーションが設定されているとします。これにより、このエンティティー・クラスの regionName は、eXtreme Scale キャッシュが初期化される場合、クラス・ロード時に解決されます。別の例としては、eXtreme Scale キャッシュ初期化後に実行される Query.setCacheRegion(String regionName) メソッドがあります。
こうした状態では、動的決定の可能性があるすべての regionNames を objectgrid.hibernate.regionNames プロパティーに組み入れ、eXtreme Scale キャッシュがすべての regionNames の BackingMaps を準備できるようにします。
- オプション: キャッシュで使用するデータ・グリッドをさらにカスタマイズするには、XML ファイルを
使用して追加設定を指定できます。
ほとんどのシナリオでは、キャッシュ・プロパティーを設定すれば十分です。キャッシュによって使用される ObjectGrid をさらにカスタマイズするには、Hibernate ObjectGrid 構成 XML ファイルを、
persistence.xml ファイルと同様に META-INF ディレクトリーに提供することができます。
初期化時に、キャッシュはこれらの XML ファイルを検索し、検出されるとそれらのファイルを処理します。
Hibernate ObjectGrid 構成 XML ファイルには次の 3 つのタイプがあります。
- hibernate-objectGrid.xml (ObjectGrid 構成)
ファイル・パス: META-INF/hibernate-objectGrid.xml
デフォルトでは、各エンティティー・クラスには、regionName が関連付けられ (エンティティー・クラス名にデフォルト設定)、
その regionName が、ObjectGrid 構成内の regionName として名付けられた BackingMap 構成にマップされます。
例えば、
com.mycompany.Employee エンティティー・クラスには、com.mycompany.Employee BackingMap とデフォルト設定される regionName が
関連付けられます。デフォルト BackingMap 構成は、readOnly="false"、copyKey="false"、lockStrategy="NONE"、および copyMode="NO_COPY" です。一部の BackingMap を選択された構成でカスタマイズできます。予約キーワード「ALL_ENTITY_MAPS」を使用すれば、hibernate-objectGrid.xml ファイルにリストされた
他のカスタマイズ・マップを除くすべてのマップを示すことができます。この hibernate-objectGrid.xml ファイルにリストされていない BackingMap は、デフォルト構成を使用します。
- hibernate-objectGridDeployment.xml (デプロイメント・ポリシー)
ファイル・パス: META-INF/hibernate-objectGridDeployment.xml
このファイルは、デプロイメント・ポリシーのカスタマイズに使用されます。デプロイメント・ポリシーをカスタマイズする場合、hibernate-objectGridDeployment.xml が提供されている場合は、デフォルトのデプロイメント・ポリシーは廃棄されます。すべてのデプロイメント・ポリシー属性値は、この提供された hibernate-objectGridDeployment.xml ファイルから得られます。
- hibernate-objectGrid-client-override.xml (クライアント ObjectGrid オーバーライド構成)
ファイル・パス: META-INF/hibernate-objectGrid-client-override.xml
このファイルは、クライアント・サイド ObjectGrid のカスタマイズに使用されます。
デフォルトでは、ObjectGrid キャッシュは、ニア・キャッシュを使用不可にするデフォルト・クライアント・オーバーライド構成を適用します。アプリケーションがニア・キャッシュを必要とする場合、アプリケーションはこのファイルを提供し、numberOfBuckets="xxx" を指定することができます。デフォルトのクライアント・オーバーライドでは、numberOfBuckets="0" を設定し、ニア・キャッシュを使用不可にします。ニア・キャッシュは、hibernate-objectGrid-client-override.xml ファイルによって numberOfBuckets 属性の値をゼロより大きい値に再設定すれば、アクティブにすることができます。
hibernate-objectGrid-client-override.xml ファイルの機能は、
hibernate-objectGrid.xml に似ています。
このファイルは、デフォルトのクライアント ObjectGrid オーバーライド構成をオーバーライドまたは拡張します。
構成された
eXtreme Scale トポロジーに応じて、これらの 3 つの XML ファイルのいずれか任意のファイルを提供してそのトポロジーをカスタマイズすることができます。
EMBEDDED と EMBEDDED_PARTITION の両方のタイプの場合、3 つの XML ファイルの任意のいずれかを提供し、ObjectGrid、デプロイメント・ポリシー、およびクライアント ObjectGrid オーバーライド構成をカスタマイズできます。
REMOTE ObjectGrid の場合、キャッシュは動的 ObjectGrid を作成しません。キャッシュは、カタログ・サービスからクライアント・サイドの ObjectGrid を取得するだけです。hibernate-objectGrid-client-override.xml ファイルを提供して、クライアント ObjectGrid オーバーライド構成をカスタマイズできるだけです。
- オプション: (リモート構成のみ) REMOTE ObjectGrid タイプのキャッシュを構成する場合、外部
eXtreme Scale システムをセットアップします。
REMOTE ObjectGrid タイプでキャッシュを構成する場合、外部 eXtreme Scale システムをセットアップする必要があります。外部システムをセットアップするためには、persistence.xml ファイルに基づく ObjectGrid および ObjectGridDeployment 構成 XML ファイルの両方が必要になります。これらの構成ファイルの例については、例: Hibernate ObjectGrid XML ファイルを参照してください。
タスクの結果
EMBEDDED または EMBEDDED_PARTITION 構成:
アプリケーションを開始すると、プラグインが
自動的にカタログ・サービスを検出または開始し、コンテナー・サーバーを開始し、コンテナー・サーバーを
カタログ・サービスに接続します。それから、プラグインは、クライアント接続を使用して別のアプリケーション・サーバー・プロセスで実行されている ObjectGrid コンテナーおよびそのピアと通信します。
各 JPA エンティティーには、エンティティーのクラス名を使用して独立したバックアップ・マップが割り当てられます。各 BackingMap には、次の属性があります。
- readOnly="false"
- copyKey="false"
- lockStrategy="NONE"
- copyMode="NO_COPY"
REMOTE 構成:
デプロイメント・ポリシーは JPA アプリケーションとは
別に指定されます。外部 ObjectGrid システムには、カタログ・サービスおよびコンテナー・サーバー・プロセスの両方があります。コンテナー・サーバーを始動する前に、カタログ・サービスを始動する必要があります。詳しくは、スタンドアロン・サーバーの始動とコンテナー・サーバーの始動を参照してください。
次のタスク
- この構成を使用する Hibernate アプリケーションを開発します。詳しくは、例: ObjectGrid キャッシュにデータをプリロードするための Hibernate プラグインの使用を参照してください。
- 実稼働環境の場合、EMBEDDED または EMBEDDED_PARTITION 構成用に自動的に作成されるプロセスの
カタログ・サービス・ドメインを作成します。
- スタンドアロン環境:
WebSphere Application Server プロセス内でサーバーを実行しない場合、カタログ・サービス・ドメインのホストおよびポートは、objectGridServer.properties というプロパティー・ファイルを使用して指定されます。このファイルは、アプリケーションのクラスパスに保管し、catalogServiceEndPoints プロパティーを定義しておく必要があります。カタログ・サービス・ドメインは、アプリケーション・プロセスとは別に開始され、アプリケーション・プロセスが開始される前に開始されなければなりません。
objectGridServer.properties ファイルのフォーマットは次のとおりです。
catalogServiceEndPoints=<hostname1>:<port1>,<hostname2>:<port2>
- WebSphere Application Server 環境:
WebSphere Application Server プロセス内で実行する場合、JPA キャッシュ・プラグインでは、WebSphere Application Server セルに定義されたカタログ・サービスまたはカタログ・サービス・ドメインに自動的に接続します。
- EMBEDDED または EMBEDDED_PARTITION ObjectGridType を Java SEJava SE 環境で使用する場合、組み込み eXtreme Scale サーバーを停止するため、プログラムの末尾に System.exit(0) メソッドを使用してください。そうしないと、プログラムが応答しなくなる可能性があります。