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 zjistí konfigurace <persistence-unit> v souboru META-INF/persistence.xml, kde aktuální konfigurace ukládání do mezipaměti vede k jinému výchozímu chování ukládání do mezipaměti EclipseLink. Pomůže vám také vyčistit vlastnosti openjpa.DataCache, které jsou ignorovány EclipseLink.

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í.

Automatizovaná oprava pro toto pravidlo nastaví explicitní hodnotu pro režim sdílené mezipaměti tak, aby pravidlo nepokračovalo v označení persistence-unit. Automatizovaná oprava vyhodnotí nastavení openjpa.DataCache a upraví existující nebo vytvoří nové konfigurace režimu sdílené mezipaměti nebo vlastnosti javax.persistence.sharedCache.mode tak, aby vaše aplikace měly stejné chování režimu mezipaměti v EclipseLink jako v 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 ukládání do mezipaměti, aby bylo zachováno stejné chování ukládání do mezipaměti v oboru EclipseLink, jak tomu bylo v rozhraní OpenJPA.

Zdrojový soubor persistence.xml pro OpenJPA Automatické změny oprav v souboru persistence.xml pro EclipseLink
<persistence>

  <persistence-unit name="example1">
    ...
    <shared-cache-mode>UNSPECIFIED</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>NONE</shared-cache-mode>
    ...
  </persistence-unit>

  <persistence-unit name="example2">
     ...
     <shared-cache-mode>ALL</shared-cache-mode>
     <properties>
     </properties>
     ...
  </persistence-unit>

  <persistence-unit name="example3">
     ...
     <shared-cache-mode>NONE</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>

Automatizovaná oprava odstraní vlastnost openjpa.DataCache , pokud má jednoduchou Hodnota true nebo false . Pokud má konfigurace vlastnosti openjpa.DataCache další parametry, jako například v následujícím příkladu, automatizovaná oprava opustí vlastnost, takže můžete určit, zda jsou zapotřebí 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 jsou ve stejné vlastnosti persistence-unitdefinovány shared-cache-mode i javax.persistence.sharedCache.mode , automatizovaná oprava v případě potřeby aktualizuje hodnotu shared-cache-mode a odstraní vlastnost javax.persistence.sharedCache.mode .

Pro soubory JPA 1.0 < span class= "FilePath">persistence.xml< /span> je prvek < code> < code> < shared-cache-mode> < /code> neplatný. Automatizovaná oprava vyhodnotí hodnoty vlastností perzistence < code>openjpa.DataCache< /code> a < code>javax.persistence.sharedCache.mode< /code> a v případě potřeby přidá vlastnost perzistence < code>eclipselink.cache.shared.default< /code>.

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: