O OpenJPA desativa o cache de segundo nível por padrão, enquanto o EclipseLink ativa o cache de segundo nível por padrão. Se você estiver migrando um aplicativo que não usa o cache, será possível desativar o cache no EclipseLink configurando o elemento a seguir em um arquivo persistence.xml versão 2.0 ou 2.1:
<shared-cache-mode>NONE</shared-cache-mode>
Para um arquivo persistence.xml versão 1.0, é possível desativar o cache no EclipseLink incluindo a propriedade a seguir:
<property name="eclipselink.cache.shared.default" value="false"/>
Essa regra detecta configurações <persistence-unit> no arquivo
META-INF/persistence.xml no qual a configuração de cache
atual resulta em um comportamento de armazenamento em cache padrão diferente no
EclipseLink. Ela também ajuda a limpar propriedades openjpa.DataCache, que
são ignoradas pelo EclipseLink.
Para determinar se uma mudança na configuração é necessária, a regra examina combinações das configurações a seguir:
<shared-cache-mode>javax.persistence.sharedCache.modeopenjpa.DataCache
Se a propriedade openjpa.DataCache não for especificada ou for configurada
como false e a configuração do modo de cache compartilhado for omitida ou
configurada como UNSPECIFIED, no EclipseLink, deve-se mudar a configuração
para desativar o cache.
Como o EclipseLink ativa o armazenamento em cache por padrão, uma
propriedade openjpa.DataCache configurada como true no OpenJPA
é equivalente a ter nenhuma configuração de modo de cache compartilhado no EclipseLink ou
a configurar shared-cache-mode como ALL.
Se você remover
manualmente a configuração openjpa.DataCache, não continue a executar essa
regra porque ela irá detectar nenhuma configuração como uma mudança de comportamento.
A correção rápida para essa regra configura um valor explícito para o modo de cache
compartilhado para que a regra não continue a sinalizar persistence-unit.
A
correção rápida avalia a configuração openjpa.DataCache e modifica as
existentes ou cria a nova configuração shared-cache-mode ou as propriedades
javax.persistence.sharedCache.mode para que seus aplicativos tenham o mesmo
comportamento de modo de cache no EclipseLink que eles tinham no OpenJPA.
No OpenJPA,
quando um valor de armazenamento em cache compartilhado definido por especificação e a
propriedade openjpa.DataCache estão configurados, o valor definido por
especificação é utilizado, a menos que ele seja UNSPECIFIED.
Se o valor for
UNSPECIFIED, a propriedade openjpa.DataCache será usada para
determinar o valor correto do modo de cache compartilhado.
Por exemplo, no arquivo persistence.xml a seguir, a regra
sinaliza todos os <persistence-unit> elementos porque eles requerem
mudanças na configuração de armazenamento em cache para manter o mesmo comportamento de
armazenamento em cache no EclipseLink que ele mantinha no OpenJPA.
| Arquivo persistence.xml de origem para OpenJPA | A correção rápida muda para o arquivo persistence.xml file no 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>
|
A correção rápida exclui a propriedade openjpa.DataCache se ela tiver um
valor simples true ou false.
Se a configuração da propriedade
openjpa.DataCache tiver parâmetros adicionais, como no exemplo a seguir, a
correção rápida deixará a propriedade para que seja possível determinar se
quaisquer mudanças manuais adicionais são necessárias.
Avalie a propriedade
openjpa.DataCache para migração adicional e, em seguida, remova a
propriedade porque ela não é usada pelo EclipseLink.
<property name="openjpa.DataCache" value="true(Types=com.test.Person;com.test.Employee)"/>
Se ambos, shared-cache-mode e javax.persistence.sharedCache.mode, estiverem
definidos no mesmo persistence-unit, a correção rápida atualizará o valor shared-cache-mode,
se necessário, e excluirá a propriedade javax.persistence.sharedCache.mode.
Para arquivos persistence.xml JPA 1.0, o elemento <shared-cache-mode>
não é válido. A correção rápida avalia os valores das
propriedades de persistência openjpa.DataCache e javax.persistence.sharedCache.mode
e inclui uma propriedade de persistência eclipselink.cache.shared.default, quando necessário.
Para obter informações adicionais sobre a migração de propriedades de configuração da JPA específicas do fornecedor, veja os recursos a seguir: