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>NENHUM</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 de <persistence-unit> no arquivo META-INF/persistence.xml no arquivo em que a configuração de cache atual resulta em um comportamento de cache padrão diferente em EclipseLink. Ele também ajuda você a limpar as propriedades do 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 automatizada para essa regra define um valor explícito para o modo de cache compartilhado para que que a regra não continue a sinalizar a unidade de persistência.
A correção automatizada avalia a openjpa.DataCache e modifica a configuração existente ou cria novas propriedades configuração do modo de cache compartilhado ou propriedades do modo javax.persistence.sharedCache para que seus aplicativos tenham o mesmo comportamento de modo de cache em EclipseLink que tinham em 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 seguinte arquivo persistence.xml, a regra sinaliza todos os elementos <persistence-unit> porque eles exigem alterações na configuração do cache para manter o mesmo comportamento de cache em EclipseLink como era em OpenJPA.
| Arquivo persistence.xml de origem para OpenJPA | Alterações de correção automatizadas no arquivo persistence.xml para EclipseLink |
|---|---|
<persistence> <persistence-unit name=" example1 ">...
<shared-cache-mode>NÃO ESPECIFICADO</shared-cache-mode>... </persistence-unit> <persistence-unit name=" example2 ">... <properties> <property name="openjpa.DataCache" value="true"/> </properties>... </persistence-unit> <persistence-unit name=" example3 ">... <properties><-- nenhuma propriedade de cache definida --></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>NENHUM</shared-cache-mode>... </persistence-unit> <persistence-unit name="example2"> ...
<shared-cache-mode>TODOS</shared-cache-mode> <properties></properties>... </persistence-unit> <persistence-unit name="example3"> ...
<shared-cache-mode>NENHUM</shared-cache-mode> <properties><-- nenhuma propriedade de cache definida --></properties>... </persistence-unit> <persistence-unit name="example4">... <properties> <property name="javax.persistence.sharedCache.mode"
value="ALL"/> </properties>...</persistence-unit> </persistence>
|
A correção automática exclui a propriedade openjpa.DataCache se ela tiver um simples valor verdadeiro ou falso.
Se a configuração da openjpa.DataCache configuração de propriedade tiver parâmetros adicionais como no exemplo a seguir, a correção automatizada deixa a propriedade para que você possa determinar se são necessárias outras alterações manuais.
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 tanto o shared-cache-mode quanto o javax.persistence.sharedCache.mode estiverem definidas na mesma persistence-unit, a correção automatizada atualiza o valor de shared-cache-mode se necessário, e exclui a propriedade javax.persistence.sharedCache.mode.
Para arquivos JPA 1.0 persistence.xml, o elemento <shared-cache-mode> não é válido. A correção automatizada avalia os valores das propriedades de persistência openjpa.DataCache e javax.persistence.sharedCache.mode propriedades de persistência e adiciona uma propriedade de persistência eclipselink.cache.shared.default quando necessário.
Copie a configuração customizada para seu arquivo de construção do aplicativo para ativar a automação de correção.
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: