Tiltsa le a perzisztencia egység második szintű gyorsítótárat

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:

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: