Estou com o seguinte problema, tenho uma aplicação com JPA com hibernate 3 + ehcache. Está tudo funcionando corretamente, porém uma outra aplicação acessa o mesmo banco de dados, e todas as alterações realizada por esta outra aplicação não fica visível na minha pois estou utilizando o cache de segundo nível do ehcache, o que faz com que meu cache fique inconsistente.
Estou precisando de algum método que eu possa implementar para limpar o cache de segundo nível do ehcache toda vez que a outra aplicação fizer alguma alteração no banco. Esta outra aplicação utiliza JDBC.
Consegui resolver :idea: , como muitas pessoas também procuraram e não havia a resposta em nenhum lugar, estou postando a forma que consegui resolver o problema, talvez ajude outras pessoas…
Estou usando JPA, então criei o seguinte método na minha factory:
private static EntityManagerFactory factory = Persistence
.createEntityManagerFactory("FerramentaWeb");
public EntityManager getEntityManager() {
return factory.createEntityManager();
}
// Este foi o método que inclui!
public void limpaCache(){
factory.getCache().evictAll();
}
}[/code]
Agora sempre que eu quiser limpar o meu cache, basta eu usar este método:
O evict pode ser em apenas uma classe também, seria mais eficiente no caso de precisar atualizar parte do cache, infelizmente não é o meu caso… :?