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:
<shared-cache-mode>javax.persistence.sharedCache.modeopenjpa.DataCache
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: