hibernate - example - spring boot h2 memory db
¿Cuál es la mejor manera de lanzar HSQLDB para pruebas de unidades cuando se trabaja con spring, maven e hibernate? (5)
En mi proyecto puedo probar con éxito el código de la base de datos. Estoy usando Spring, Hibernate, HSQLDB, JUnit y Maven.
El problema es que actualmente tengo que iniciar HSQLDB manualmente antes de ejecutar las pruebas. ¿Cuál es la mejor manera de automatizar el lanzamiento de HSQLDB con las tecnologías utilizadas?
Con JUnit, puede crear un método que se ejecute antes de sus pruebas utilizando la siguiente anotación: @Antes
El enlace a la documentación de JUnit al respecto se encuentra aquí: Preguntas frecuentes de JUnit - Pruebas prácticas
También puede ejecutar una tarea Ant <startdb>
:
https://forums.hibernate.org/viewtopic.php?f=6&t=984383&start=0
Utilícelo in-process o en la memoria y se iniciará desde JDBC al establecer una conexión.
Yo mismo uso la base de datos en memoria de hsql para probar mi DAO. Como resultado, no necesito estar conectado a ningún servidor externo de bases de datos o tener una conexión de red.
Use las siguientes configuraciones:
jdbc.driverClassName=org.hsqldb.jdbc.JDBCDriver
jdbc.url=jdbc:hsqldb:mem:DatabaseName
También incluye el
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
<prop key="default_schema">test</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">false</prop>
<prop key="hibernate.hbm2ddl.auto">create</prop>
</props>
</property>
Esto le permitirá utilizar la base de datos en memoria y creará automáticamente las tablas de la base de datos a partir de objetos en hibernación antes de ejecutar las pruebas.
Espero que esto te ayudará.
Nota:
La propiedad "default_schema" se usa cuando su DBA crea múltiples esquemas dentro de una sola base de datos. He visto esto en postgres donde todos usan una URL de base de datos, pero debajo de eso hay esquemas separados para cada aplicación.
Al usar la propiedad de esquema predeterminada, le permite mantener los nombres de esquema fuera de sus entidades. Esto es particularmente útil si está ejecutando pruebas en HSqlDB que no admite esquemas y lo implementa en una base de datos que usa esquemas. Tener un valor nulo significa que vuelve a los valores predeterminados del esquema predeterminado de la base de datos.
Estoy asumiendo que con hsql
te estás refiriendo a HSQLDB .
Configure la url de su base de datos para los controladores JDBC (para hibernación, etc.) a la versión basada en memoria integrada de HSQLDB:
jdbc:hsqldb:mem:myunittests
Luego, una versión en proceso de HSQLDB inicia automáticamente las cosas que almacena en la memoria. No es necesario iniciar ningún servidor externo.