Disabilitazione della cache di secondo livello dell'unità di persistenza

OpenJPA disabilita la cache di secondo livello per impostazione predefinita, mentre EclipseLink per impostazione predefinita l'abilità. Se si sta eseguendo la migrazione di un'applicazione che non utilizza la cache, è possibile disabilitare la cache in EclipseLink impostando il seguente elemento nel file persistence.xml della versione 2.0 o 2.1:

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

In un file persistence.xml della versione 1.0, è possibile disabilitare la cache di EclipseLink aggiungendo la seguente proprietà:

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

Questa regola rileva le configurazioni <persistence-unit> nel file META-INF/persistence.xml in cui la configurazione della memorizzazione nella cache corrente determina un comportamento della memorizzazione nella cache predefinita diverso in EclipseLink. Consente inoltre di ripulire le proprietà openjpa.DataCache, che sono ignorate da EclipseLink.

Per determinare se è necessaria una modifica alla configurazione, la regola esamina le combinazioni delle seguenti impostazioni:

Se la proprietà openjpa.DataCache non è specificata o se è impostata su false e la configurazione della modalità di cache condivisa è stata omesse o impostata con UNSPECIFIED, sarà necessario cambiare la configurazione in EclipseLink per disabilitare la cache. Poiché EclipseLink abilita per impostazione predefinita la memorizzazione nella cache, una proprietà openjpa.DataCache impostata su true in OpenJPA, equivale a non avere l'impostazione della modalità di cache condivisa in EclipseLink o ad impostare shared-cache-mode su ALL. Se si rimuove manualmente la configurazione openjpa.DataCache, non continuare ad eseguire questa regola perché, come un cambiamento del comportamento, non rileverà alcuna configurazione.

La correzione automatica per questa regola imposta un valore esplicito per la modalità cache condivisa in modo che la regola non continui a contrassegnare l' unità di persistenza. La correzione automatizzata valuta l'impostazione openjpa.DataCache e modifica le impostazioni esistenti o crea nuove La configurazione shared - cache - mode o le proprietà javax.persistence.sharedCache.mode in modo che le applicazioni abbiano lo stesso comportamento della modalità cache in EclipseLink come in OpenJPA. In OpenJPA, quando si imposta sia il valore della cache condivisa definito dalla specifica condivisa che la proprietà openjpa.DataCache, viene utilizzato il valore definito dalla specifica a meno che non sia UNSPECIFIED. Se il valore è UNSPECIFIED, si utilizza la proprietà openjpa.DataCache per determinare il valore corretto della modalità di cache condivisa.

Ad esempio, nel seguente file persistence.xml, la regola contrassegna tutti gli elementi <persistence-unit> perché richiedono modifiche alla configurazione della memorizzazione nella cache per mantenere lo stesso comportamento di memorizzazione nella cache in EclipseLink di OpenJPA.

File persistence.xml di origine per OpenJPA Modifiche delle correzioni automatizzate al file persistence.xml per 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>

La correzione automatizzata elimina la proprietà openjpa.DataCache se dispone di un Valore true o false . Se la configurazione della proprietà openjpa.DataCache dispone di parametri aggiuntivi, come nel seguente esempio, la correzione automatica lascia la proprietà in modo da poter determinare se sono necessarie ulteriori modifiche manuali. Valutare se è necessaria un'ulteriore migrazione nella proprietà openjpa.DataCache, e quindi rimuoverla perché non viene utilizzata da EclipseLink.

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

Se sia shared - cache - mode che javax.persistence.sharedCache.mode sono definiti nella stessa persistence - unit, la correzione automatizzata aggiorna il valore shared - cache - mode se necessario ed elimina la proprietà javax.persistence.sharedCache.mode .

Per JPA 1.0 < span class= "FilePath">persistence.xml< /span> file, l'elemento < code> < shared - cache - mode> < /code> non è valido. La correzione automatica valuta i valori delle propriet ... di persistenza < code>openjpa.DataCache< /code> e < code>javax.persistence.sharedCache.mode< /code> e aggiunge una propriet ... di persistenza < code>eclipselink.cache.shared.default< /code> quando necessario.

Copiare la configurazione personalizzata (custom configuration) nel file di build dell'applicazione per abilitare l'automazione delle correzioni.

Per ulteriori informazioni sulla migrazione delle proprietà di configurazione JPA specifiche del fornitore, consultare le seguenti risorse: