-
hibernate et HSQLDB
bonjour,
j'ai une base HSQL que j'arrive à modifier via un programme java classique du style :
Class.forName("org.hsqldb.jdbcDriver").newInstance();
Connection connexion = DriverManager.getConnection("jdbc:hsqldb:file:C:\\ma base hsql db\\ma_base", "sa", "");
Statement statement = connexion.createStatement();
statement.executeQuery("update customer set firstname='aaaaaaaaaaa' where id=0");
statement.executeQuery("SHUTDOWN");
statement.close();
connexion.close()
après exécuté le code j'ouvre le fichier ma_base.script qui est bien modifié.
je cherche à obtenir le même résultat avec hibernate avec le code :
Session session = HibernateUtil.currentSession();
Transaction tx = session.beginTransaction();
Customer contact = new Customer();
contact.setFirstname("Firstname de test");
contact.setCity("City de test");
contact.setLastname("Lastname de test");
contact.setStreet("Street de test");
session.save(contact);
System.out.println("test save");
tx.commit();
je ne trouve pas ce nouvel élément dans ma_base.script. En revanche l'élément est bien quelque part car je le vois avec hibernate si je fais ensuite une itération sur les éléments de la table.
j'ai donc l'impression que les données sont donc en mémoire mais ne persistent pas dans ma base HSQLDB.
voici mon hibernate.cfg.xml j'ai: (en particulier dans l'url j'ai bien file)
<property name="hibernate.connection.url">
jdbc:hsqldb:file:C://ma base hsql db//ma_base
</property>
<property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver
</property>
<property name="hibernate.connection.username">sa</property>
<property name="hibernate.connection.password" />
<property name="dialect">net.sf.hibernate.dialect.HSQLDialect
</property>
<property name="hibernate.show_sql">false</property>
<property name="hibernate.use_outer_join">true</property>
<property name="hibernate.transaction.factory_class">
net.sf.hibernate.transaction.JDBCTransactionFactory
</property>
<mapping resource="Customer.hbm" />
est ce que vous pouvez m'aider?
-
Et après un shutdown, il n'y a toujours rien dans le fichier scripts ?
-
j'ai trouvé la réponse là :http://www.deutschkron.com/weblog/ar...ate-and-hsqldb
en fait il faut faire 2 choses :
1: If you are using Hibernate, you should specify this property with the JDBC URL for HSQLDB: hibernate.connection.url = jdbc:hsqldb:file:<path_to_hsqldb>;shutdown=true
Or you separately define the connection property: hibernate.connection.shutdown = true
2:It is not enough to specify the shutdown option – you must also close the database properly. This can be done by closing either the SessionFactory or the EntityManagerFactory.
cordialement