Jpa + hsqldb

Pessoal

Alguém já utilizou JPA com HSQLDB, em modo Stand-Alone?

Estou precisando utilizar isto e tudo funciona perfeitamente, exceto que, quando eu fecho a aplicação, os dados não persistem.

Se estivesse utilizando o banco com JDBC, poderia executar um commit(), ao final da transação.

Como isto está sendo feito pelo JPA, não tenho esta opção (pelo menos não achei nada a respeito e nem consegui fazer).

Já pesquisei bastante sobre isto, mas nada funcionou.

Alguém sabe como fazer?

Grato

Júlio,

estou com o mesmo problema, você conseguiu achar a solução?

Júlio,

lembrei que a muito tempo usei um HSQL em uma aplicação não JPA e nela os dados eram “commitados” (putz), revirei aqui os backups e achei os fontes.

Bom, não sei se essa é a solução ou mesmo se é a melhor, mas funcionou :smiley:

Basta adiciona na URL de conexão o texto: ;shutdown=true , veja como ficou o meu persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
  <persistence-unit name="league" transaction-type="RESOURCE_LOCAL">
    <provider>oracle.toplink.essentials.PersistenceProvider</provider>
    <class>com.sun.demo.jpa.Player</class>
    <class>com.sun.demo.jpa.Team</class>
    <properties>
      <property name="toplink.jdbc.user" value="sa"/>
      <property name="toplink.jdbc.password" value=""/>
      <property name="toplink.jdbc.url" value="jdbc:hsqldb:file:./db/league;shutdown=true"/>
      <property name="toplink.jdbc.driver" value="org.hsqldb.jdbcDriver"/>
      <property name="toplink.target-database" value="HSQL"/>
      <property name="toplink.ddl-generation" value="create-tables"/>
    </properties>
  </persistence-unit>
</persistence>

Boa noite!
Acho que nesse site a seguir pode ajudar bastante vocês.

http://www.jchico.org/search/label/jpa

Abraço.

Boa madruga !!
rsrsrrsrsrsrs
Cara pode ser o forma de persistencia.!!!
Assim, a atualização do banco
“create”, “create-drop”, “update”.
Pode não estar marcada e esta deletando sempre que fecha sua aplicação.!!
Funciona enquanto estar aberta porque ainda esta na memoria e não deu o flush() ainda, que realmente é quem llibera
as transações e persiste-as no banco
Da uma olhada !

Mas estou usando CREATE-TABLES, isso não seria suficiente? Ou depois de usar essa tenho que mudar a PU para UPDATE?

[quote=dering]Boa noite!
Acho que nesse site a seguir pode ajudar bastante vocês.

http://www.jchico.org/search/label/jpa

Abraço.[/quote]

Já tinha passado por este site, o problema é que, justamente com o TOPLINK, ele usa MYSQL e não HSQLDB.

Acho que sim, é no PU que definimos “as regras do banco”.
Acho que UPDATE resolveria, tive um problema parecido, procurei em todos os lugares e explicações,
quando cai na real, era lá, mudei e pronto resolveu o problema.
Qualquer coisa posta a duvida melhor exemplificada.
Abraços

Para que os dados persistam usando o HSQLDB, você precisa chamar explicitamente o comando “shutdown”.
Colocar ele na URL de conexão NÃO vai funcionar (ou seja, não precisa fazer isso).

Usando JPA, chame uma query nativa e execute o comando “shutdown”. No exemplo abaixo, meu EntityManager foi instanciado com o nome de “dao” (pois com JPA eu não escrevo DAOs):

    dao.createNativeQuery("SHUTDOWN").executeUpdate();