unit tutorial test example baeldung java unit-testing hibernate spring test-data

java - tutorial - Pruebas de primavera/hibernación: inserción de datos de prueba después de la creación de DDL



spring unit test (3)

Estoy intentando encontrar una forma de indicar a Hibernate "siempre que crees esta tabla, inserta estas filas inmediatamente después"

Desde Hibernate 3.1, puede incluir un archivo llamado import.sql en la ruta de import.sql de tiempo de ejecución de Hibernate y en el momento de la exportación del esquema, Hibernate ejecutará las declaraciones SQL contenidas en ese archivo una vez que se haya exportado el esquema.

Esta función se anunció en la publicación del blog import.sql de Rotterdam JBug and Hibernate :

import.sql: importa datos fácilmente en tus pruebas unitarias

Hibernate tiene una pequeña característica que está muy poco documentada y es desconocida. Puede ejecutar un script SQL durante la creación de SessionFactory justo después de la generación del esquema de la base de datos para importar datos en una base de datos nueva. Solo necesita agregar un archivo llamado import.sql en la raíz de su ruta de import.sql y establecer create o create-drop como su propiedad hibernate.hbm2ddl.auto .

Lo uso para Hibernate Search in Action ahora que he iniciado el capítulo de consulta. Inicializa mi base de datos con un nuevo conjunto de datos para mis pruebas unitarias. JBoss Seam también lo usa mucho en los diversos ejemplos. import.sql es una característica muy simple pero es bastante útil en el momento. Recuerde que el SQL puede depender de su base de datos (¡portabilidad!).

#import.sql file delete from PRODUCTS insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values (''1'', ''630522577X'', ''My Fair Lady'', 19.98, ''630522577X.jpg'', ''My Fair blah blah...''); insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL, DESCRIPTION) values (''2'', ''B00003CXCD'', ''Roman Holiday '', 12.98, ''B00003CXCD.jpg'', ''We could argue that blah blah'');

Para obtener más información acerca de esta función, consulte el blog de Eyal , escribió una pequeña entrada al respecto. Recuerde que si desea agregar objetos de base de datos adicionales (índices, tablas, etc.), también puede usar la función de objetos de base de datos auxiliares.

Todavía no está realmente documentado.

Tengo una aplicación web Spring / Hibernate que tiene algunas pruebas de integración que se ejecutan en una base de datos HSQL en memoria. Hibernate toma esta base de datos en blanco y crea todas mis tablas de prueba y restricciones gracias a hbm2ddl = create. Sin embargo, tengo un nuevo bean que comprueba un valor de configuración particular de la base de datos durante su método afterPropertiesSet (), por lo que cuando este bean se inicializa, tal fila debe existir en la base de datos.

¿Hay alguna buena manera de configurar un equivalente de Java / Spring / Hibernate de los dispositivos de prueba de Rail? Estoy intentando encontrar una forma de indicar a Hibernate "siempre que crees esta tabla, inserta estas filas inmediatamente después". No pude encontrar una devolución de llamada o un enlace que podría agregar, pero tal vez haya otra manera.