¿Hay un flujo de trabajo sencillo para generar un esquema de base de datos de clases con las asignaciones de hibernación?
Pregunta
Id como para definir mis objetos a continuación, utilizar hibernación para generar mi DDL a partir de esto. Pero parece que el flujo de trabajo sólo es real con Hibernate es generar un esquema datbase y técnicas de ingeniería inversa. ¿Estoy con ganas de hacer algo que no tiene sentido?
Solución
Si hay un hibernate.hbm2ddl.auto
propiedad. El documentación dice:
valida automáticamente o exportaciones de esquema DDL para la base de datos cuando se crea la SessionFactory. Con create-drop, el esquema de base de datos será dado de baja cuando la SessionFactory se cierre explícitamente.
por ejemplo. Validar | actualización | crear | crear-drop
Hay varias maneras de definir esta propiedad, dependiendo de cómo se configura su SessionFactory
. La forma de hibernación es simplemente agregar:
<property name="hibernate.hbm2ddl.auto">update</property>
Otros consejos
Sin embargo, parece que el flujo de trabajo sólo es real con Hibernate es generar un esquema de base de datos y luego técnicas de ingeniería inversa.
No, en absoluto. Históricamente, Hibernate soporta varios enfoques:
-
De arriba hacia abajo:. Se empieza con el modelo de objetos, a continuación, crear metatdata mapeo ya sea con archivos XML o anotaciones y luego generar el esquema utilizando la herramienta
hbm2ddl
de Hibernate -
bottom:. Se comienza con una base de datos existente y generan asignaciones y las clases de Java (o clases Java simplemente anotado) del esquema de base de datos utilizando
hbm2hbmxml
yhbm2java
-
Oriente a cabo:. Se comienza escribiendo mapeos XML Hibernate y generar las clases Java usando DDL y
hbm2ddl
yhbm2java
respectivamente -
reunirse en el centro: Tiene un modelo existente de Java y una base de datos existente. Hibernate utillaje puede no ayuda mucho aquí, usted es muy probable que las asignaciones de escritura a mano y hacer algo de refactorización de la base de datos o del código Java, o utilizar algún tipo de puente. Esta es la peor situación.
Así que, como hemos visto, Hibernate soporta varios flujos de trabajo y proporciona herramientas para ellos. Y en su caso, usted está buscando la herramienta llamada hbm2ddl
(también conocido como SchemaExport
, que es el nombre de la clase que implementa ella). Hay varias formas de utilizarlo:
- Puede ejecutar
SchemaExport
mediante programación. - Usted puede permitir la exportación automática del esquema durante la creación
SessionFactory
estableciendo elhibernate.hbm2ddl.auto
propiedad a un valor apropiado - Usted puede utilizar el
<hbm2ddl>
tarea Ant
Referencias
- Guía de referencia de Hibernate Core
- Herramientas Guía de referencia de Hibernate