Algo de un novato con HSQL e Hibernate ...HSQLDB e Hibernate/JPA: ¿no persiste en el disco?
em.getTransaction().begin();
for (Activity theActivity : activities) {
em.persist(theActivity);
}
em.getTransaction().commit();
em.close();
seguido de ...
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
System.out.println("QUERY:: "
+ em.createQuery("SELECT COUNT(*) FROM " + Activity.class.getName()).getSingleResult()
.toString());
em.getTransaction().commit();
imprime 25000 (el número de objetos de actividad en las actividades). Pero cuando vuelvo a ejecutar esta prueba, la cantidad de objetos en el conteo (*) no aumenta (y es 0 al comienzo del programa). Entonces los objetos no se escriben de forma duradera.
Esta es mi cadena de conexión hsqldb:
name="hibernate.connection.url" value="jdbc:hsqldb:file:data/cmon"
por lo que no es una base de datos en memoria por lo que yo sé ...
¿Alguien tiene alguna idea de por qué los objetos no están recibiendo persistió más allá de una sola sesión de JVM? Feliz de proporcionar más información, pero hay tanto estado asociado con Hibernate/JPA/HSQL que no está claro exactamente lo que es pertinente.
Como otro punto de datos, los INSERTES de la última ejecución están en data/cmon.log, que se borra al inicio y se reemplaza. Tal vez haya una opción para forzar la repetición de registro al inicio? – HenryR
Esto significa que el registro tiene lugar. Informe el tamaño de .log y de cualquier archivo .script en ese directorio. También la versión de HSQLDB que está usando. – fredt
@fredt - Hibernate 1.8.0. El tamaño del registro es de aproximadamente 4 MB, alrededor de 37000 declaraciones de inserción. cmon.script tiene 1.9 KB y curiosamente termina con SET WRITE_DELAY 10, lo que hace que parezca que mis cambios en la cadena de conexión no funcionan. – HenryR