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 <literal>SchemaExport</literal> 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 <literal>SchemaUpdate</literal> 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: ]]>