2010-01-22 966 views
10

¿Cómo verificar que la configuración de mapeo de Hibernate coincida con la base de datos? Me gustaría saber si estoy utilizando una versión incorrecta de la asignación de hibernación antes de comenzar a ejecutar la actualización y las consultas, que luego fallarían.Cómo validar el mapeo de Hibernate con la base de datos

Tengo un montón de clases que se han mapeado con anotaciones de Hibernate. También tengo conexión a la base de datos correspondiente. Ahora me gustaría comprobar si la asignación de Hibernate coincide con la base de datos.

me gustaría comprobar al menos siguiente cosas:

  • todas las tablas mapeadas en la configuración de Hibernate tener objeto correspondiente en la base de datos (por ejemplo, tabla o vista)
  • existir todos los campos asignados en base de datos
  • todos los campos correlacionados tienen los tipos correctos

Preferiría no tener que ejecutar consultas en tablas mapeadas, preferiblemente la verificación se basa únicamente en los metadatos de la base de datos.

Respuesta

14

De Hibernate configuration docs:

hibernate.hbm2ddl.auto

valida automáticamente o exportaciones DDL de esquema para la base de datos cuando se crea la SessionFactory. Con create-drop, el esquema de la base de datos se eliminará cuando SessionFactory se cierre explícitamente.

p. Ej. validar | actualización | crear | crear soltar

Por lo tanto, se puede establecer a validate y se verificará si todo en sus asignaciones de hibernación está presente en la base de datos. Si lo configura en update, cada vez que agregue una clase o propiedad mapeada, el esquema db subyacente se actualizará para reflejar ese cambio.

También tienen una herramienta de línea de comandos - SchemaUpdate

+0

Algo así como que yo estoy buscando. Pero, ¿hay algo en API que pueda ejecutar programáticamente? –

+1

Puede ejecutarlo programáticamente. Escriba un pequeño programa que crea una SessionFactory con "validate" activado. – duffymo

+0

sí, hay una herramienta de línea de comandos: la agregué a mi respuesta. O preferiblemente haz lo que Duffymo sugirió. – Bozho

Cuestiones relacionadas