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.