Usando Hibernate com HSQLDB

3 respostas
G

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á.

3 Respostas

Franciscato

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.

G

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.

romarcio

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>

Criado 24 de fevereiro de 2016
Ultima resposta 2 de mar. de 2016
Respostas 3
Participantes 3