パーシスタンス・ユニットの第 2 レベル・キャッシュは無効にしなければならない

OpenJPA ではデフォルトで第 2 レベル・キャッシュは無効になりますが、EclipseLink ではデフォルトで第 2 レベル・キャッシュは有効になります。キャッシュを使用していないアプリケーションをマイグレーションする場合は、バージョン 2.0 または 2.1 の persistence.xml ファイルに以下のエレメントを設定することで、EclipseLink でキャッシュを無効にすることができます。

   <shared-cache-mode>なし</shared-cache-mode>

バージョン 1.0 の persistence.xml ファイルの場合は、以下のプロパティーを追加して、EclipseLink でキャッシュを無効にすることができます。

   <property name="eclipselink.cache.shared.default" value="false"/>

このルールは、<persistence-unit>ファイル内の<persistence-unit>コンフィギュレーションを検出します。 META-INF/persistence。 で異なるデフォルトのキャッシュ動作になるようなファイルの設定を検出します。 また EclipseLink で無視される openjpa.DataCache プロパティのクリーンアップにも役立つ。

構成変更が必要かどうかを判別するため、この規則は以下の設定の組み合わせを検査します。

openjpa.DataCache プロパティーが指定されていないか false に設定されていて、 かつ、共有キャッシュ・モード構成が省略されているか UNSPECIFIED に設定されている場合、EclipseLink では構成を変更してキャッシュを無効にする必要があります。 EclipseLink ではデフォルトでキャッシュが有効にされるため、OpenJPA で openjpa.DataCache プロパティーを true に設定することは、 EclipseLink で共有キャッシュ・モード設定を省略するか shared-cache-modeALL に設定することと等価です。 手動で openjpa.DataCache 構成を削除する場合は、この規則で振る舞いの変更として検出される構成はなくなるため、この規則の実行を継続する必要はありません。

このルールの自動修正では、共有キャッシュ・モードに明示的な値を設定することで、ルールが永続性ユニットにフラグを立て続けないようにしている。 ルールが永続性ユニットにフラグを立て続けないようにする。 自動修正は openjpa.DataCache 設定を評価し、既存の 共有キャッシュ・モード設定または javax.persistence.sharedCache.mode プロパティを変更または新規作成します。 EclipseLink を変更または新規作成することで、アプリケーションのキャッシュ・モード動作が OpenJPA と同じになります。 OpenJPA では、仕様で定義された共有キャッシュ値と openjpa.DataCache プロパティーの両方が設定されている場合、仕様で定義された値が、UNSPECIFIED でない限り使用されます。 値が UNSPECIFIED の場合、共有キャッシュ・モードの正しい値を判別するために openjpa.DataCache プロパティーが使用されます。

たとえば、次のpersistence.xmlファイルでは、<persistence-unit>要素にフラグを立てる、 ファイルでは、<persistence-unit> 要素のすべてにフラグを立てます。 要素にフラグを立てます。 EclipseLink OpenJPA のキャッシュ動作を維持するために、キャッシュ構成に変更を加える必要があるためです。

OpenJPA 用のソース persistence.xml ファイル persistence.xml ファイルの自動修正 EclipseLink
<persistence> <persistence-unit name=" example1 ">とする。...
    <shared-cache-mode>不明</shared-cache-mode>... </persistence-unit> <persistence-unit name=" example2 ">.... <properties> <property name="openjpa.DataCache" value="true"/> </properties>... </persistence-unit> <persistence-unit name=" example3 ">とする。... <properties><-- キャッシュ・プロパティが設定されていない --></properties>... </persistence-unit> <persistence-unit name=" example4 ">とする。... <properties> <property name="openjpa.DataCache" 
                  value="false"/> <property name="javax.persistence.sharedCache.mode" 
                  value="ALL"/> </properties>... </persistence-unit> </persistence>
<persistence>

  <persistence-unit name="example1">
    ...
    <shared-cache-mode>なし</shared-cache-mode>... </persistence-unit> <persistence-unit name="example2"> ...
     <shared-cache-mode>すべて</shared-cache-mode> <properties></properties>... </persistence-unit> <persistence-unit name="example3"> ...
     <shared-cache-mode>なし</shared-cache-mode> <properties><-- キャッシュ・プロパティが設定されていない --></properties>... </persistence-unit> <persistence-unit name="example4">... <properties> <property name="javax.persistence.sharedCache.mode" 
                  value="ALL"/> </properties>...</persistence-unit> </persistence>

自動修正では、 openjpa.DataCache プロパティに単純な true または false 値がある場合、そのプロパティを削除します。 もし openjpa.DataCache プロパティ設定に追加パラメータがある場合 以下の例のように、プロパティの設定に追加のパラメータがある場合、自動修正はそのプロパティを残したままにします。 を決定することができます。 追加マイグレーションが必要かどうか openjpa.DataCache プロパティーを評価した後、EclipseLink では使用されないため、このプロパティーを削除してください。

    <property name="openjpa.DataCache" value="true(Types=com.test.Person;com.test.Employee)"/>

shared-cache-modejavax.persistence.sharedCache.mode の両方が同じ persistent-unit で定義されている場合、自動修正によって、必要に応じて shared-cache-mode 値が更新され、 javax.persistence.sharedCache.mode プロパティが削除されます。

JPA 1.0 persistence.xml ファイルの場合、<shared-cache-mode> 要素は無効です。 要素は無効です。 自動修正では openjpa.DataCachejavax.persistence.sharedCache.mode 永続性プロパティ の値を評価し、必要に応じて eclipselink.cache.shared.default 永続プロパティを追加します。

カスタム構成をアプリケーション・ビルド・ファイルにコピーして、フィックスの自動化を有効にします。

ベンダー固有の JPA 構成プロパティーのマイグレーションについて詳しくは、以下のリソースを参照してください。