Como posso desativar o cache de segundo nível de alguns certas entidades em Hibernate sem alterar anotações

StackOverflow https://stackoverflow.com/questions/934133

Pergunta

Eu estou usando Hibernate cache de segundo nível na minha candidatura, por certo razão de negócios Eu não posso mudar a anotação entidade mais .

No meu projeto, além de mudar o banco de dados do Hibernate, também existem outras SQL nativo que não passam por Hibernate. Portanto, os dados cache de segundo nível Hibernate poderia ser obsoleto após o banco de dados que está sendo atualizado a partir do SQL nativo. É por isso que eu quero para desativar o cache de segundo nível para certas entidades (programaticamente ou outra forma de alterar anotação).

Agradecemos antecipadamente!

Foi útil?

Solução

AVISO: Como Jens Schauder observou, é impossível para configurar Ehcache para armazenar 0 elementos na memória, definindo maxElementsInMemory = "0" como ele efetivamente provoca efeito oposto - conjuntos de tamanho ilimitado para o cache. Este comportamento não é mencionado na página do Hibernate Cache mas está documentado no página de configuração de cache .

Eu rapidamente analisou a documentação e não encontraram abordagem alternativa ainda. Eu sou incapaz de eliminar esta resposta por mim mesmo. : - (

Minha sugestão original:

Você pode configurar o provedor de implementação de cache de segundo nível aos tempos TTL curtas e / ou para armazenar 0 entradas de determinado tipo de entidade.

por exemplo. se você estiver usando o Ehcache, você pode configurá-lo em ehcache.xml: *

<cache
name="com.problematic.cache.EntityName"
maxElementsInMemory="0" <<== this should effectively disable caching for EntityName
overflowToDisk="false" <<== Do not overflow any entries to disk
/>

Consulte Hibernate Cache na documentação Ehcache.

Outras dicas

No Terracotta 3.1 e acima, você pode ativar / desativar Hibernate 2º nível caches em uma base por região, tanto na configuração (estaticamente) e no tempo de execução, usando o Terracotta console do desenvolvedor.

Você também pode monitorar em tempo real as estatísticas sobre o cache e Hibernate, para nós individuais em um cluster ou de todo o cluster.

Terracotta é open source. Para mais detalhes, consulte a Terracotta por Hibernate .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top