Guía del Conjunto de Herramientas
La ingeniería de ida y vuelta con Hibernate es posible usando un conjunto de plugins de Eclipse,
herramientas de línea de comandos, así como tareas de Ant.
Las Herramientas de Hibernate actualmente incluyen plugins para la IDE de
Eclipse así como tareas de Ant para la ingeniería inversa de bases de datos existentes:
Editor de Mapeo: Un editor de ficheros de mapeo XML, que soporta autocompleción
y resaltado de sintáxis. Soporta también autocompleción semántica de nombres de clases y nombres de
campos/propiedades, haciéndolo mucho más versátil que un editor de XML normal.
Consola: La consola es una nueva vista en Eclipse. Además de la vista de
árbol de tus configuraciones de consola, tienes también una vista interactiva de tus clases
persistentes y sus relaciones. La console te permite ejecutar consultas HQL contra tu base de datos y
navegar el resultado directamente en Eclipse.
Asistentes de Desarrollo: Se proveen muchos asistentes con las herramientas
de Eclipse. Puedes usar un asistente para generar rápidamente ficheros de configuración de Hibernate
(cfg.xml), o incluso puedes haceruna ingeniería inversa completa de un esquema de base de datos existente
en ficheros de código de POJO y ficheros de mapeo de Hibernate. El asistente de ingeniería inversa soporta
plantillas personalizables.
Tareas de Ant:
Por favor refiérete al paquete Herramientas de Hibernate y su documentación para
más información.
Sin embargo, el paquete principal de Hibernate viene incluyendo una herramienta integrada
(puede ser usada incluso "dentro" de Hibernate on-the-fly): SchemaExport
también conocido como hbm2ddl.
Generación automática de esquemas
Una utilidad de Hibernate puede generar DDL desde tus ficheros de mapeo. El esquema generado incluye
restricciones de integridad referencial (claves primarias y foráneas) para las tablas de entidades y
colecciones. Las tablas y secuencias también son creadas para los generadores de identificadores mapeados.
Debes especificar un Dialecto SQL vía la propiedad
hibernate.dialect al usar esta herramienta, ya que el DDL es altamente específico del
vendedor.
First, customize your mapping files to improve the generated schema.
Personalizando el esquema
Muchos elementos de mapeo de Hibernate definen un atributo opcional llamado length.
Con este atributo puedes establecer el tamaño de una columna. (O, para tipos de datos
numéricos/decimales, la precisión.)
Algunas etiquetas también aceptan un atributo not-null (para generar una restricción
NOT NULL en columnas de tablas) y y un atributo unique (para generar
restricciones UNIQUE en columnas de tablas).
Algunas etiquetas aceptan un atributo index para especificar el nombre de un índice
para esa columna. Se puede usar un atributo unique-key para agrupar columnas en una
restricción de clave de una sola unidad. Actualmente, el valor especificado del atributo
unique-key no es usado para nombrar la restricción, sólo para
agrupar las columnas en el fichero de mapeo.
Ejemplos:
]]>
Alternativamente, estos elementos aceptan tambíen un elemento hijo <column>.
Esto es particularmente útil para tipos multicolumnas:
]]>
]]>
El atributo sql-type permite al usuario sobrescribir el mapeo por defecto de
tipo Hibernate a tipo de datos SQL.
El atributo check te permite especificar una comprobación de restricción.
]]>
...
]]>
Resumen
Atributo
Valores
Interpretación
length
number
largo de columna/precisión decimal
not-null
true|false
especifica que la columna debe ser no nulable
unique
true|false
especifica que la columna debe tener una restricción de unicidad
index
index_name
especifica el nombre de un índice (multicolumna)
unique-key
unique_key_name
especifica el nombre de una restricción de unicidad multicolumna
foreign-key
foreign_key_name
especifica el nombre de la restricción de clave foránea generada por una
asociación, úsalo en los elementos de mapeo <one-to-one>, <many-to-one>,
<key>, y <many-to-many>. Nota que los lados
inverse="true" no serán considerados por
SchemaExport.
sql-type
column_type
sobrescribe el tipo de columna por defecto (sólo atributo del elemento
<column>)
check
expresión SQL
crea una restricción de comprobación SQL en columna o tabla
El elemento <comment> te permite especificar un comentario para el esquema
generado.
Current customers only
...
]]>
Balance in USD
]]>
Esto resulta en una sentencia comment on table o comment on column
en el DDL generado (donde esté soportado).
Ejecutando la herramienta
La herramienta SchemaExport escribe un guión DDL a la salida estándar y/o
ejecuta las sentencias DDL.
java -cp classpaths_de_hibernate
org.hibernate.tool.hbm2ddl.SchemaExport opciones ficheros_de_mapeo
Opciones de Línea de Comandos de SchemaExport
Opción
Descripción
--quiet
no enviar a salida estándar el guión
--drop
sólo desechar las tablas
--text
no exportar a la base de datos
--output=my_schema.ddl
enviar la salida del guión ddl a un fichero
--config=hibernate.cfg.xml
lee la configuración de Hibernate de un fichero XML
--properties=hibernate.properties
lee las propiedades de base de datos de un fichero
--format
formatea agradablemente el SQL generado en el guión
--delimiter=x
establece un delimitador de fin de línea para el guión
Puedes incluso encajar SchemaExport en tu aplicación:
Propiedades
Las propiedades de base de datos pueden especificarse
como propiedades de sistema con -D<property>
en hibernate.properties
en un fichero de propiedades mencionado con --properties
Las propiedades necesarias son:
Propiedades de Conexión de SchemaExport
Nombre de Propiedad
Descripción
hibernate.connection.driver_class
clase del driver jdbc
hibernate.connection.url
url de jdbc
hibernate.connection.username
usuario de base de datos
hibernate.connection.password
contraseña de usuario
hibernate.dialect
dialecto
Usando Ant
Puedes llamar a SchemaExport desde tu guión de construcción de Ant:
]]>
Actualizaciones incrementales de esquema
La herramienta SchemaUpdate actualizará un esquema existente con cambios
"incrementales". Nota que SchemaUpdate depende fuertemente de la API de metadatos
de JDBC, de modo que no funcionará con todos los drivers JDBC.
java -cp classpaths_de_hibernate
org.hibernate.tool.hbm2ddl.SchemaUpdate opciones ficheros_de_mapeo
Opciones de Línea de Comandos de SchemaUpdate
Opción
Descripción
--quiet
no enviar a salida estándar el guión
--properties=hibernate.properties
lee las propiedades de base de datos de un fichero
Puedes encajar SchemaUpdate en tu aplicación:
Usando Ant para actualizaciones incrementales de esquema
Puedes llamar a SchemaUpdate desde el guión de Ant:
]]>