OpenJPA inhabilita la memoria caché de segundo nivel de forma predeterminada, mientras que EclipseLink la habilita de forma predeterminada. Si está migrando una aplicación que no utiliza la memoria caché, puede inhabilitar la memoria caché en EclipseLink estableciendo el elemento siguiente en un archivo persistence.xml de la versión 2.0 o 2.1:
<shared-cache-mode>NONE</shared-cache-mode>
Para un archivo persistence.xml de la versión 1.0 puede inhabilitar la memoria caché en EclipseLink añadiendo la propiedad siguiente:
<property name="eclipselink.cache.shared.default" value="false"/>
Esta regla detecta configuraciones <persistence-unit> en el archivo META-INF/persistence.xml donde la configuración de la memoria caché actual da como resultado un comportamiento de memoria caché predeterminado diferente en EclipseLink. También le ayuda a limpiar las propiedades openjpa.DataCache, que EclipseLink ignora.
Para determinar si se requiere un cambio de configuración, la regla examina las combinaciones de los valores siguientes:
<shared-cache-mode>javax.persistence.sharedCache.modeopenjpa.DataCache
Si la propiedad openjpa.DataCache no se especifica o se establece en false y se omite la configuración de modalidad de memoria caché compartida o se establece en UNSPECIFIED, en EclipseLink debe cambiar la configuración para inhabilitar la memoria caché.
Puesto que EclipseLink habilita la memoria caché de forma predeterminada, una propiedad openjpa.DataCache establecida en true en OpenJPA es equivalente a tener el valor de modalidad de memoria caché no compartida en EclipseLink o a establecer shared-cache-mode en ALL.
Si elimina manualmente la configuración openjpa.DataCache, no continúe ejecutando esta regla ya que no detectará ninguna configuración como cambio de comportamiento.
El arreglo rápido de esta regla establece un valor explícito para la modalidad de memoria caché compartida, de forma que la regla no continúa marcando persistence-unit.
El arreglo rápido evalúa el valor openjpa.DataCache y modifica el valor existente o crea una nueva configuración shared-cache-mode o propiedades javax.persistence.sharedCache.mode para que las aplicaciones tengan el mismo comportamiento de modalidad de memoria caché en EclipseLink que el que tenían en OpenJPA.
En OpenJPA, cuando esté establecido tanto un valor de memoria caché compartida definida por especificación como la propiedad openjpa.DataCache, se utilizará el valor definido por la especificación, a menos que sea UNSPECIFIED.
Si el valor es UNSPECIFIED, se utiliza la propiedad openjpa.DataCache para determinar el valor correcto de la modalidad de memoria caché compartida.
Por ejemplo, en el siguiente archivo persistence.xml, la regla marca todos los elementos <persistence-unit> porque requieren cambios en la configuración de la memoria caché para mantener el mismo comportamiento de memoria caché en EclipseLink que el que tenían en OpenJPA.
| Archivo persistence.xml de origen para OpenJPA | El arreglo rápido cambia al archivo persistence.xml para 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>
|
El arreglo rápido suprime la propiedad openjpa.DataCache si tiene un valor
true o false simple.
Si la propiedad de configuración openjpa.DataCache tiene parámetros adicionales como en el ejemplo siguiente, el arreglo rápido deja la propiedad de tal forma que se puede determinar si se requieren cambios manuales adicionales.
Evalúe la propiedad openjpa.DataCache para migración adicional y a continuación elimine la propiedad, ya que EclipseLink no la utiliza.
<property name="openjpa.DataCache" value="true(Types=com.test.Person;com.test.Employee)"/>
Si shared-cache-mode y javax.persistence.sharedCache.mode están definidos en el mismo
persistence-unit, el arreglo rápido actualiza el valor shared-cache-mode si así se requiere y
suprime la propiedad javax.persistence.sharedCache.mode.
Para archivos persistence.xml de JPA 1.0, el elemento
<shared-cache-mode> no es válido. El arreglo rápido evalúa los valores de las propiedades de
persistencia openjpa.DataCache y javax.persistence.sharedCache.mode y añade una propiedad de
persistencia eclipselink.cache.shared.default cuando es necesario.
Para obtener más información sobre la migración de las propiedades de configuración JPA específicas del proveedor, consulte los recursos siguientes: