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>NONE</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ót
a META-INF/persistence.xml fájlban, ahol
a jelenlegi gyorsítótár konfiguráció egy eltérő
alapértelmezett gyorsítótárazási viselkedést eredményez az EclipseLink
megvalósításban. Segítséget nyújt az openjpa.DataCache
tulajdonságok takarításához is, amelyeket az 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ályhoz tartozó gyorsjavítás beállít egy kifejezett értéket a
megosztott gyorsítótárazási módhoz, hogy a szabály a továbbiakban ne
jelölje meg a persistence-unit elemet.
A gyorsjavítás kiértékeli az openjpa.DataCache beállítást,
és módosítja a meglévő shared-cache-mode konfigurációt vagy
javax.persistence.sharedCache.mode tulajdonságot, vagy
létrehoz egy újat, hogy az alkalmazásoknak ugyanaz legyen a gyorsítótár
mód viselkedésük az EclipseLink megvalósításban, mint korábban az OpenJPA
megvalósításban volt.
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 megjelöli az összes
<persistence-unit> elemet, mert ezek gyorsítótárazási
konfigurációját módosítani kell, hogy megmaradjon ugyanaz a
gyorsítótárazási viselkedés az EclipseLink megvalósításban, mint ami
korábban volt az OpenJPA megvalósításban.
| Forrás persistence.xml fájl OpenJPA esetén | A gyorsjavítás módosítja a persistence.xml fájlt az EclipseLink megvalósításhoz |
|---|---|
<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>
|
A gyorsjavítás törli az openjpa.DataCache
tulajdonságot, ha az egy egyszerű true vagy
false értéket tartalmaz.
Ha az openjpa.DataCache tulajdonság konfigurációja
tartalmaz további paramétereket, mint például a következő példában,
akkor a gyorsjavítás meghagyja a tulajdonságot, hogy eldönthesse,
szükségesek-e további kézi módosítások.
É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 a shared-cache-mode és a
javax.persistence.sharedCache.mode egyaránt meg van adva
ugyanabban a persistence-unit elemben, akkor a gyorsjavítás
szükség esetén frissíti a shared-cache-mode értékét, és törli
a javax.persistence.sharedCache.mode tulajdonságot.
JPA 1.0 persistence.xml fájlok esetén a
<shared-cache-mode> elem nem érvényes. A gyorsjavítás
kiértékeli az openjpa.DataCache és
javax.persistence.sharedCache.mode
perzisztenciatulajdonságokat, és ha szükséges, hozzáad egy
eclipselink.cache.shared.default perzisztenciatulajdonságot.
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: