Etwas von einem Anfänger mit HSQL und Hibernate ...HSQLDB und Hibernate/JPA - nicht persistent auf Festplatte?
em.getTransaction().begin();
for (Activity theActivity : activities) {
em.persist(theActivity);
}
em.getTransaction().commit();
em.close();
von ...
gefolgtEntityManager em = emf.createEntityManager();
em.getTransaction().begin();
System.out.println("QUERY:: "
+ em.createQuery("SELECT COUNT(*) FROM " + Activity.class.getName()).getSingleResult()
.toString());
em.getTransaction().commit();
Prints 25000 (die Anzahl der Aktivitätsobjekte in Aktivitäten). Aber wenn ich diesen Test erneut durchführe, erhöht sich die Anzahl der Objekte in der Zählung (*) nicht (und ist am Anfang des Programms 0). So werden die Objekte nicht dauerhaft geschrieben.
Das ist meine hsqldb Verbindungszeichenfolge:
name="hibernate.connection.url" value="jdbc:hsqldb:file:data/cmon"
es ist also nicht eine In-Memory-Datenbank, soweit ich weiß ...
Hat jemand irgendwelche Ideen, warum die Objekte nicht bekommen über eine einzige JVM-Sitzung hinaus bestehen? Ich freue mich, mehr Informationen zu liefern, aber es gibt so viele Zustände, die mit Hibernate/JPA/HSQL verbunden sind, dass nicht klar ist, was genau dazugehört.
Als ein weiterer Datenpunkt befinden sich die INSERTs des letzten Laufs in der Datei data/cmon.log, die beim Start gelöscht und ersetzt wird. Vielleicht gibt es eine Option, um die Protokollwiedergabe beim Start zu erzwingen? – HenryR
Dies bedeutet, dass die Protokollierung stattfindet. Bitte melden Sie die Größe der .log-Datei und einer beliebigen .script-Datei in diesem Verzeichnis. Auch die Version von HSQLDB, die Sie verwenden. – fredt
@fredt - Hibernate 1.8.0. Die Größe des Protokolls beträgt ca. 4 MB, ca. 37000 Einfügeanweisungen. cmon.script ist 1.9K und endet seltsamerweise mit SET WRITE_DELAY 10 - was es so aussehen lässt, als ob meine Änderungen an der Verbindungszeichenfolge nicht funktionieren. – HenryR