Hibernate キャッシュ・プラグインの構成

プロパティー・ファイルを指定することで、Hibernate キャッシュ・プラグインを使用する キャッシュを使用可能にできます。

始める前に

手順

  1. 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 ファイルをアプリケーションに組み込む必要があります。

  2. 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 を準備できるようにします。
  3. オプション: キャッシュで使用するデータ・グリッドをさらにカスタマイズするには、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 オーバーライド構成をカスタマイズできるだけです。

  4. オプション: (リモート構成のみ) 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 システムには、カタログ・サービスおよびコンテナー・サーバー・プロセスの両方があります。コンテナー・サーバーを始動する前に、カタログ・サービスを始動する必要があります。詳しくは、スタンドアロン・サーバーの始動コンテナー・サーバーの始動を参照してください。

次のタスク