Hibernate de segundo nível ehcache.xml cache, a configuração de cache para entidades não pode ser lido para hibernar
-
06-09-2019 - |
Pergunta
Para tornar mais clara e fácil, eu tenho dois projetos: 1. projeto Uma Entidade onde existem todas as classes de entidade neste projeto. 2. Um projeto que contém uma função main () para executar o aplicativo, Meu ehcache.xml é colocado no caminho de classe do projeto.
O meu problema é: Eu posso mudar o elemento defaultCache de ehcache.xml e eu posso ver as alterações do arquivo de log SQL. Mas acho que o Hibernate somente leitura meu defaultCache elemento , porque tudo o que eu mudança na Cache elemento de uma entidade específica de ehcache.xml, não haverá qualquer alteração no o registo de SQL.
Por exemplo: Se eu definir o maxElementsInMemory de defaultCache elemento 0 , o que eu definir o maxElementsInMemory do Cache elemento de uma entidade 100 ou 0 , não haverá qualquer dessa entidade em cache no cache de segundo nível. Se eu definir o maxElementsInMemory de defaultCache elemento 100 , o que eu definir o maxElementsInMemory do Cache elemento de uma entidade 100 ou 0 , há sempre ser essa entidade em cache no cache de segundo nível.
Então, eu acho que talvez o atributo nome do Cache elemento de uma entidade é erroneamente definido e não pode ser lido a partir de hibernação?
Solução
Eu achei que o meu problema é. Estou usando ehcache como provedor de cache. No ehcache.xml, acho que o elemento defaultCache também é usado para todos os QueryCaches também, se eu não definir o elemento StandardQueryCache. Portanto, não é importante ou não eu definir o maxElementsInMemory de a "0", porque toda a QueryCache estão usando a região de defaultCache. Mas definir o maxElementsInMemory de "0" pode definitivamente ajudar para desativar o cache de nível sencond dessa entidade ao utilizar a função EntityManager.find ().
Outras dicas
Por favor, leia a documentação. Em caso de configuração maxElementsInMemory
, um valor de 0
tem um significado especial - unlimited
. Então, ao invés de ficar sem cache em tudo, você está caching tudo.