estou fazendo uma aplicação web que utiliza JPA e ehcache ( utilizando implementação hibernate ) e gostaria de saber se é possivel forçar o reload do cache a partir de um método.
Sendo mais especifico, gostaria de chamar um método que limpasse todo o cache da aplicação naquele momento e a partir dai ele começasse a popular o cache novamente do zero.
Meio estranho o que voce esta tentando fazer. Mas, de qualquer maneira, voce precisa fazer um cast para SessionFactoryImplementor (que eh a interface mais especializada, cuja implementacao da session factory do hibernate utiliza) e chamar o metodo getAllSecondLevelCacheRegions(), e depois getSecondLevelCacheRegion(String) passando o nome de cada region, e ai invocar o metodo clear() do Cache. Algo como
Como que eu pego o SessionFactory ? Pode ser uma pergunta idiota =)
Usando JPA e o EHCACHE ele automaticamente cria o cache, nao tenho controle sobre essa inicialização.
O problema é o seguinte:
criei dois contextos diferentes que acessam o mesmo banco de dados, e gostaria de usar o ehcache.
Porém tenho que garantir que o cache fique consistente, dessa maneira queria criar um método que limpasse o cache.
Ao modificar o banco através de uma das aplicações teria que limpar o cache da outra entendeu ? =(
Seguinte, o hibernate com ou sem cache praticamente não muda nada nos métodos de manipulação de dados.
Quando o cache de segundo nível estiver ativado e a classe for mapeada para ser cacheada, os comandos para consultar dados primeiro verificam o cache os dados e depois o banco de dados.