Dezactivaţi cache-ul nivel doi al unităţii de persistentă

OpenJPA dezactivează cache-ul implicit nivel doi, întrucât EclipseLink activează cache-ul nivel doi în mod implicit. Dacă migraţi o aplicaţie care nu utilizează cache-ul , puteţi dezactiva cache-ul în EclipseLink setând următorul element într-un fişier versiunea 2.0 sau 2.1 persistence.xml:

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

Pentru un fişier versiunea 1.0 persistence.xml, puteţi dezactiva cache-ul în EclipseLink adăugând următoarea proprietate:

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

Această regulă detectează configuraţiile <persistence-unit> din fişierul META-INF/persistence.xml unde configuraţia de cache curentă are ca rezultat un comportament de cache diferit în EclipseLink. Vă ajută, de asemenea, să curăţaţi proprietăţile openjpa.DataCache, care sunt ignorate de EclipseLink.

Pentru a determina dacă este necesară o modificare de configurare, regula examinează combinaţiile următoarelor setări:

Dacă proprietatea openjpa.DataCache nu este specificată sau este setată la false şi modul de configurarea al cache-ului partajat este omis sau setat la UNSPECIFIED, în EclipseLink trebuie să modificaţi configuraţia pentru a dezactiva cache-ul. Deoarece EclipseLink activează memorare în cache implicit, o proprietate openjpa.DataCache setată la true în OpenJPA este echivalent cu a nu avea setarea modului cache partajat în EclipseLink sau setarea shared-cache-mode la ALL. Dacă înlăturaţi manual configuraţia openjpa.DataCache, nu mai rulaţi această regulă, deoarece nu va detecta nicio configuraţie ca o modificare de comportament.

Fix automat pentru această regulă stabilește o valoare explicită pentru modul cache comun, astfel încât regula nu continuă să pavilion the persistenţă-unitate. Remedierea automată evaluează modifică sistem de setare aopenjpa.DataCache partajată-cache-mode sau javax.persistence.sharedCache.modeproprietăți de tip , astfel încât aplicațiile dvs. să aibă același comportament în modul cache în EclipseLink cum au făcut- OpenJPA În OpenJPA, când ambele o valoare de cache partajat definită de specificaţie şi proprietatea openjpa.DataCache sunt setate, valoarea definită de specificaţie este utilizată doar dacă este UNSPECIFIED. Dacă valoarea este UNSPECIFIED, proprietatea openjpa.DataCache este folosită pentru a determina valoarea corectă a modului cache partajat.

De exemplu, în următorul fişier persistence.xml, regula semnalează toate elementele <persistence-unit>, deoarece acestea necesită modificări ale configuraţiei cache pentru a menţine acelaşi comportament de cache în EclipseLink ca în OpenJPA.

Fişier sursă persistence.xml pentru OpenJPA Modificări automate de persistence.xml " pentru 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>
        <-- no cache properties set -->
     </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>
        <-- no cache properties set -->
     </properties>
     ...
  </persistence-unit>

  <persistence-unit name="example4">
     ...
     <properties>
        <property name="javax.persistence.sharedCache.mode" 
                  value="ALL"/>
     </properties>
     ...
  </persistence-unit>

</persistence>

Remedierea automată șterge proprietatea openjpa.DataCache care are un simplu adevărat sau valoarea fals . În cazul în care configurația openjpa.DataCache suplimentari, cum ar fi în exemplul următor, fixul automat părăsește proprietatea, astfel încât să puteți determina dacă sunt necesare modificări manuale suplimentare. Evaluaţi proprietatea openjpa.DataCache pentru migrare suplimentară şi apoi înlăturaţi proprietatea deoarece nu este folosită de către EclipseLink.

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

Dacă atât partajat-cache-mode cât și javax.persistence.sharedCache.mode sunt definite în același persistenţă-unitate, fix-ul automat actualizează valoarea partajat-cache-mode dacă este necesar și șterge proprietatea javax.persistence.sharedCache.mode .

Pentru JPA 1.0 < span class= "FilePath" > fișierelepersistence.xml< /span>, elementul < code> < shared-cache-mode> < /code> nu este valid. Remedierea automată evaluează valorile < code>openjpa.DataCache< /code> și < code>javax.persistence.sharedCache.mode< /code> persistence properties and adds an < code>eclipselink.cache.shared.default< /code> persistence property when needed.

Copiați configurația personalizată pe fișierul de build al aplicației pentru a activa automatizarea corectării.

Pentru informaţii suplimentare despre migrarea proprietăţilor de configurare JPA specifice furnizorului, vedeţi următoarele resurse: