Az OpenJPA alapértelmezés szerint letiltja a második szintű gyorsítótárat, míg az EclipseLink alapértelmezés szerint engedélyezi azt. Ha egy gyorsítótárat nem használó alkalmazást állít át, akkor az EclipseLink megvalósításban a következő elem beállításával tilthatja le a gyorsítótárat a 2.0 vagy 2.1 változatú persistence.xml fájlban:
<shared-cache-mode>NINCS</shared-cache-mode>
Az 1.0 változatú persistence.xml fájl esetén a gyorsítótárat az EclipseLink megvalósításban a következő tulajdonság hozzáadásával tilthatja le:
<property name="eclipselink.cache.shared.default" value="false"/>
Ez a szabály észleli a <persistence-unit> konfigurációkat a META-INF/persistence.xml fájlban, ahol az aktuális gyorsítótárazási konfiguráció eredményeképpen eltérő alapértelmezett gyorsítótárazási viselkedést eredményez a EclipseLink. Segít a tisztításban is a openjpa.DataCache tulajdonságait, amelyeket a EclipseLink figyelmen kívül hagy.
Annak megállapításához, hogy szükséges-e a konfiguráció módosítása, a szabály a következő beállítások kombinációit vizsgálja meg:
<shared-cache-mode> konfigurációs elemjavax.persistence.sharedCache.mode perzisztencia
tulajdonságopenjpa.DataCache perzisztencia tulajdonság
Ha az openjpa.DataCache tulajdonság nincs megadva
vagy false értékre van beállítva, és a megosztott
gyorsítótárazási mód ki van hagyva vagy UNSPECIFIED értékre
van beállítva, akkor az EclipseLink megvalósításban módosítani kell a
konfigurációt, hogy letiltsa a gyorsítótárazást.
Mivel az EclipseLink
alapértelmezés szerint engedélyezi a gyorsítótárazást, az OpenJPA
megvalósításban egy true értékre beállított
openjpa.DataCache tulajdonság egyenértékű azzal, hogy az
EclipseLink megvalósításban nincs megosztott gyorsítótárazási mód
beállítás, vagy a shared-cache-mode tulajdonság
ALLértékre van beállítva.
Ha kézzel eltávolítja az openjpa.DataCache konfigurációt,
akkor ne futtassa tovább ezt a szabályt, mert egyetlen konfigurációt sem
fog viselkedésváltozásként észlelni.
A szabály automatikus javítása explicit értéket állít be a megosztott gyorsítótár üzemmódhoz, így hogy a szabály ne jelezze tovább a persistence-unitot.
Az automatikus javítás kiértékeli a openjpa.DataCache beállítást, és módosítja a meglévő vagy új shared-cache-mode konfigurációt vagy a javax.persistence.sharedCache.mode tulajdonságait hogy az alkalmazások ugyanúgy viselkedjenek a cache-módban a EclipseLink oldalon, mint a OpenJPA oldalon.
Az OpenJPA megvalósításban, amikor egy specifikáció által meghatározott
megosztott gyorsítótár érték és az openjpa.DataCache
tulajdonság egyaránt be van állítva, akkor a specifikáció által megadott
érték kerül felhasználásra, kivéve, ha az UNSPECIFIED.
Ha az érték UNSPECIFIED, akkor az
openjpa.DataCache tulajdonság kerül felhasználásra a
megosztott gyorsítótárazási mód helyes értékének megállapításához.
Például a következő persistence.xml fájlban, a szabály az összes <persistence-unit> elemet megjelöli, mert azok a gyorsítótárazási konfiguráció módosítását igénylik az azonos a EclipseLink oldalon a OpenJPA oldalhoz hasonló gyorsítótárazási viselkedést.
| Forrás persistence.xml fájl OpenJPA esetén | Automatizált javítás a persistence.xml fájlban a következőhöz 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><-- nincs beállítva cache tulajdonság --></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>NINCS</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>NINCS</shared-cache-mode> <properties><-- nincs beállítva cache tulajdonság --></properties>... </persistence-unit> <persistence-unit name="example4">... <properties> <property name="javax.persistence.sharedCache.mode"
value="ALL"/> </properties>...</persistence-unit> </persistence>
|
Az automatikus javítás törli a openjpa.DataCache tulajdonságot, ha az egyszerű true vagy false értéke van.
Ha a openjpa.DataCache tulajdonság konfigurációja további paraméterekkel rendelkezik mint például a következő példában, az automatikus javítás elhagyja a tulajdonságot, így Ön meghatározhatja a hogy szükség van-e további manuális módosításokra.
Értékelje ki az openjpa.DataCache tulajdonságot, hogy
szükséges-e további átállítás, majd távolítsa el a tulajdonságot,
mert az EclipseLink nem használja.
<property name="openjpa.DataCache" value="true(Types=com.test.Person;com.test.Employee)"/>
Ha mind a shared-cache-mode, mind a javax.persistence.sharedCache.mode értékek ugyanabban a persistence-unitban van definiálva, az automatikus javítás a shared-cache-mode-ot frissíti értéket, ha szükséges, és törli a javax.persistence.sharedCache.mode tulajdonságot.
A JPA 1.0 persistence.xml fájlok esetében a <shared-cache-mode> elem nem érvényes. Az automatikus javítás kiértékeli a openjpa.DataCache és a javax.persistence.sharedCache.mode állandósági tulajdonságok értékét és szükség esetén hozzáad egy eclipselink.cache.shared.default állandósági tulajdonságot.
Másolja az egyéni konfigurációt az alkalmazás összeépítési fájljába a javítás automatizálásához.
A szállítóra jellemző JPA konfigurációs tulajdonságok átállításával kapcsolatos további információkért tekintse meg a következőket: