| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/07/2010 00:42:20
|
edsonregis
Entusiasta Java
Membro desde: 12/12/2008 22:33:14
Mensagens: 23
Offline
|
Boa noite caros, também estou tendo problemas para colocar o ehcache para funcionar (query cache) na minha aplicação web. Acho que está faltando alguma configuração específica, pois com a configuração atual, ao rodar uma classe java simples com um método main, o resultado mostra que o cache está funcionando corretamente. Nesta classe executo uma query a primeira vez
em seguida executo um update via jdbc na entidade, e por último executo a query novamente. O resultado é o esperado, a query esta sendo cacheada pois o
resultado da segunda chamada é o mesmo da primeira, apesar de 1 dos objetos ter sido atualizado via jdbc...
Porém na aplicação web não ocorre o esperado. Esta mesma query encontra-se em um método de um EJB, e é invocada ao carregar uma página. O teste que estou fazendo é simples: carrego a página e vejo a lista, em seguida faço update no banco de dados e recarrego a página, que me mostra os registros alterados.
Acho que o cache está durando somente durante a vida do EntityManager. Ao fazer um novo teste na classe citada anteriormente, porém fechando o EntityManager via em.close(), e obtendo uma nova instância para 2 execução da query, o resultado mostra os registros alterados conforme o update via jdbc...
Bem espero ter sido claro hehehe, grato por qualquer ajuda.
persistence.xml
[]s.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/07/2010 17:13:12
|
edsonregis
Entusiasta Java
Membro desde: 12/12/2008 22:33:14
Mensagens: 23
Offline
|
Bom dia caros, consegui resolver o problema anotando as classes de entidade para serem cacheadas, pensei que fosse necessário anotá-las apenas para cachear os objetos obtidos por find, lazyload ou outro mecanismo que não fosse Query. Descobri também que no meu primeiro experimento em que eu achava que o 2nd level cache estava funcionando, na verdade era o 1st level cache, por isso ao fechar a sessão ( em.close() ), o resultado vinha conforme o update, pois o 2nd level não estava habilitado devido não ter anotado as classes de entidade. Outra coisa, se vc não criar o arquivo ehcache.xml com suas configurações, o arquivo ehcache-failsafe.xml existente dentro do jar do ehcache é utilizado. []'s.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/09/2010 18:14:45
|
rafiusiks
What is classpath?
Membro desde: 04/05/2006 09:31:17
Mensagens: 9
Offline
|
Galera,
Configurei como citado pelo donatinho, verifiquei meu Jboss e ele subiu com as linhas que indicam o cache no ar, mapeei uma entidade como eternal="true" e a estrategia como READ_ONLY, porém, todas as vezes que faço o select ele printa a consulta no console, logo acredito que o cache não está funcionando.
Porém, o metodo de pegar a lista é atraves de uma criteria, onde ele me traz uma lista dessa entidade, que é sempre a mesma, pois se trata de uma lista de Estados Brasileiros, será que devo cachear a query?
Alguém tem alguma dica de como testar isso?
PS: O meu entendimento está correto né? Uma vez eternal e read only, ele não deveria mais ir ao banco apos a primeira consuta certo?
Outra coisa, ao eu der um shutdown no Jboss o cache é limpo, e ao subir de novo ele tera que refazer o cache, isso é correto?
This message was edited 1 time. Last update was at 16/09/2010 18:26:34
|
|
|
 |
|
|
|
|