Zakázat mezipaměť druhé úrovně jednotky perzistence

OpenJPA standardně zakáže mezipaměť druhé úrovně, zatímco EclipseLink standardně povoluje mezipaměť druhé úrovně. Pokud migrujete aplikaci, která mezipaměť nepoužívá, můžete zakázat mezipaměť v EclipseLink nastavením následujícího prvku v souboru persistence.xml verze 2.0 nebo 2.1:

   <shared-cache-mode>NONE</shared-cache-mode>

V případě souboru persistence.xml verze 1.0 můžete zakázat mezipaměť v EclipseLink přidáním následující vlastnosti:

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

Toto pravidlo zjišťuje konfigurace <persistence-unit> v systému META-INF/persistence.xml souboru, z něhož vyplývá aktuální konfigurace mezipaměti k jinému výchozímu chování ukládání do mezipaměti v EclipseLink. Pomáhá také při čištění openjpa.DataCache vlastnosti, které EclipseLink ignoruje.

Chcete-li určit, zda je vyžadována změna konfigurace, bude pravidlo kontrolovat kombinace následujících nastavení:

Není-li vlastnost openjpa.DataCache zadána nebo nastavena na hodnotu false a je-li konfigurace režimu sdílené mezipaměti vynechána nebo nastavena na hodnotu UNSPECIFIED, je třeba v EclipseLink změnit konfiguraci tak, aby byla mezipaměť zakázána. Protože EclipseLink standardně povoluje ukládání do mezipaměti, je vlastnost openjpa.DataCache nastavená na hodnotu true v OpenJPA ekvivalentní nastavení režimu sdílení mezipaměti v EclipseLink nebo nastavení shared-cache-mode na ALL. Pokud ručně odeberete konfiguraci openjpa.DataCache, nepokračujte ve spouštění tohoto pravidla, protože nebude zjišťovat žádnou konfiguraci jako změnu chování.

Automatická oprava tohoto pravidla nastavuje explicitní hodnotu pro režim sdílené mezipaměti, takže aby pravidlo nadále neoznačovalo jednotku perzistence. Automatická oprava vyhodnotí openjpa.DataCache nastavení a upraví stávající nebo vytvoří nové konfiguraci shared-cache-mode nebo javax.persistence.sharedCache.mode vlastnosti tak, aby se vaše aplikace chovaly v režimu mezipaměti na adrese EclipseLink stejně jako na adrese OpenJPA. Když jsou v rozhraní OpenJPA současně nastaveny hodnota sdílené mezipaměti definovaná specifikací i vlastnost openjpa.DataCache, použije se hodnota definovaná specifikací, pokud to není hodnota UNSPECIFIED. Je-li hodnota UNSPECIFIED, použije se k určení správné hodnoty režimu sdílené mezipaměti vlastnost openjpa.DataCache.

Například v následujícím souboru persistence.xml, pravidlo označí všechny prvky <persistence-unit>, protože vyžadují změny v konfiguraci mezipaměti, aby byla zachována stejná chování mezipaměti v EclipseLink, jako tomu bylo v OpenJPA.

Zdrojový soubor persistence.xml pro OpenJPA Automatizované opravy změn v souboru persistence.xml pro EclipseLink
<persistence> <persistence-unit name=" example1 ">...
    <shared-cache-mode>NEURČITÉ</shared-cache-mode>... </persistence-unit> <persistence-unit name=" example2 ">... <properties> <property name="openjpa.DataCache" value="true"/> </properties>... </persistence-unit> <persistence-unit name=" example3 ">... <properties><-- nejsou nastaveny žádné vlastnosti mezipaměti --></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>ŽÁDNÁ</shared-cache-mode>... </persistence-unit> <persistence-unit name="example2"> ...
     <shared-cache-mode>VŠECHNY</shared-cache-mode> <properties></properties>... </persistence-unit> <persistence-unit name="example3"> ...
     <shared-cache-mode>ŽÁDNÁ</shared-cache-mode> <properties><-- nejsou nastaveny žádné vlastnosti mezipaměti --></properties>... </persistence-unit> <persistence-unit name="example4">... <properties> <property name="javax.persistence.sharedCache.mode" 
                  value="ALL"/> </properties>...</persistence-unit> </persistence>

Automatická oprava odstraní openjpa.DataCache vlastnost, pokud má jednoduchý true nebo false. Pokud openjpa.DataCache má konfigurace vlastnosti další parametry jako v následujícím příkladu, automatická oprava ponechá vlastnost tak, abyste mohli určit zda jsou nutné další ruční změny. Vyhodnoťte vlastnost openjpa.DataCache pro další migraci a poté odeberte vlastnost, protože ji EclipseLink nepoužívá.

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

Pokud je režim sdílené mezipaměti i javax.persistence.sharedCache.mode definovány ve stejné persistence-jednotce, automatická oprava aktualizuje sdílený-cache-mode a odstraní vlastnost javax.persistence.sharedCache.mode.

U souborů JPA 1.0 persistence.xml, <shared-cache-mode> není platný. Automatická oprava vyhodnotí hodnoty openjpa.DataCache a javax.persistence.sharedCache.mode vlastnosti perzistence a v případě potřeby přidá vlastnost perzistence eclipselink.cache.shared.default .

Zkopírujte vlastní konfiguraci do svého souboru sestavení aplikace a povolte automatizaci opravy.

Další informace o migraci vlastností konfigurace rozhraní JPA specifických pro prodejce naleznete v následujících zdrojích: