Galera, tenho um programa java funcionando que armazena dados em um banco MySQL com Hibernate, porém, resolvi utilizar um banco embarcado e encontrei que uma boa opção seria o HSQLDB, porém, ao configurar o persistence.xml para salvar num banco HSQLDB em arquivo, o programa não rodou legal, executando normalmente quando eu rodo a classe que insere, porém quando vou ver os dados desse banco, o banco está vazio ou possui apenas 1 registro, mesmo que eu tenha inserido vários.
Tem alguma configuração específica do HSQLDB para utilizá-lo como banco de dados salvo em arquivo com o Hibernate?
Se alguém puder me ajudar, eu ficaria grato. Obrigado desde já.
Usando Hibernate com HSQLDB
3 Respostas
1-Você está realizando o commit?
2-O HSQLDB tem uma funcionalidade de BD em Memória, que é totalmente volátil, certifique-se de não estar utilizando desta forma.
Problema resolvido.
Especificamente ao utilizar o HSQLDB é preciso, após chamar o método comit() e fechar o EntityManager, reabrir a transação e executar o seguinte comando:
EntityManager em = HibernateUtil.getEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); em.createNativeQuery("SHUTDOWN").executeUpdate(); em.close();
Espero que essa resposta ajude quem possuir a mesma dúvida que eu tinha.
Tem outras 2 formas de usar o SHUTDOWN sem ser no código.
1ª - na URL na configuração da SessionFactory:
<property name="hibernate.connection.url">
jdbc:hsqldb:file:filedb;shutdown=true
</property>
2ª - em uma propriedade da SessionFactory:
<property name="connection.shutdown">true</property>