Hibernate cache

2 respostas
J

Pessoal estou tendo um problema com o hibernate.

Na minha aplicação eu crio um registro, salvo e dou commit para o banco. Em outra aplicação, não java, eu faço uma alteração nesse registro, porém essa alteração não é vista pelo hibernate. Provavelmente ele está utilizando um objeto que está em cache.

Alguém sabe o que eu posso fazer???

Obrigado

2 Respostas

F

Olá jr_klein!

Eu estava passando exatamente por esta situação a alguns dias atrás, mas meu problema era a mesma aplicação, baseada em hibernate, rodando em computadores na rede. Alterações em um computador não eram percebidas por outro, embora todas elas “commitadas” já estivessem efetivadas na base de dados.

Discutindo com o pessoal aqui, percebi que o problema estava como eu tinha estruturado minha aplicação, ou seja, eu abria uma sessão quando iniciava a aplicação e não fechava mais, só lançava o commit pra efetivas as transações.

Foi então que o pessoal falou que eu deveria, após cada interação com a base, fechar a sessão. O problema é que minha aplicação desktop não funcionaria assim, teria que alterá-la toda com VOs ou lazy=“false”(que na verdade não funcionou). Até que sugeriram a utilização de spring ou genesis ou qualquer outro framework de IoC pra controlar a abertura e fechamento automático da sessão, mas achei muito complicado.

Daí que esbarrei num anúncio do Db4o, e após apanhar um bocado, consegui fazer minha aplicação funcionar a contendo, ainda está um pouco lenta em certas consultas complexas, mas no geral está ótimo.

Se teu requisito não contempla a necessidade de utilizar um banco de dados relacional, poderias estudar Db4o (www.db4o.com). Tive que alterar pouca coisa em meus DAOs pra funcionar legal.

Pra um programador iniciante como eu está sendo muito bom.

Abração.

J

Flávio,

Obrigado pela resposta.
Alterar o banco eu não posso pois a minha aplicação é integrada com essa outra que fez as alterações. Esta outra aplicação é a aplicação principal.

Eu vou precisar de alguma outra sugestão por que também não posso abrir uma sessão somente para trabalhar com o banco pois toda a lógica de licenças está no outro sistema.

Obrigado.

Criado 1 de fevereiro de 2007
Ultima resposta 1 de fev. de 2007
Respostas 2
Participantes 2