Creación automática de recursos Hibernate con Middlegen

0
46161

Modelado de bases de datos e integración con Hibernate mediante Middlegen

 

1. Introducción

Con este tutorial se pretende mostrar una guía de desarrollo de base de
datos desde su modelado hasta su integración con Hibernate mediante Middlegen.

Middlegen es una potente
herramienta que permite a partir de nuestra base de datos generar la capa de
persistencia de EJB (CMP 2.0), JDO, Hibernate, Torque y además un sistema GUI
de navegación de nuestra base de datos con JSP/Struts.

Esta herramienta puede ser descardada desde SourceForge:   http://sourceforge.net/project/showfiles.php?group_id=36044

El uso de Middlegen se automatiza mediante el uso de Apache
ANT
.

Basándonos en este ejemplo podemos ahora nuestros POJO’s (Plain Old Java
Objects) y ficheros hbm.xml.

 

Con estos tres pasos cubrimos todo el desarrollo, desde el diseño de la base
de datos hasta la generación de los ficheros descriptores de cada tabla de
Hibernate y los POJO’s para usar con Hibernate.

 

2. Entorno

Las herramientas usadas en este tutorial son las siguientes:

  • DBDesigner 4.0.5.6
  • MySQL 4.1.1, usaremos tablas de tipo InnoDB.
  • mysql-connector-java-3.0.11-stable-bin.jar JDBC Driver
  • MySQL Control Center 0.9.4
  • Apache ANT 1.6
  • Middlegen 2.0 instalado en el directorio C:\java\middlegen-2.0-vo
  • Hibernate 2.1.4

3. Guía de desarrollo

El método de desarrollo de nuestra base de datos desde su diseño inicial
hasta su uso en nuestra aplicación sería el siguiente:

  1. Modelado de la base de datos (Por ejemplo con DBDesigner).
  2. Creación de la base de datos a partir de la herramienta de modelado.
  3. Generación de los ficheros hbm.xml de Hibernate y los POJO’s mediante
    Middlegen y hbm2java.

4. Ejemplo de Middlegen

Dentro del directorio C:\java\middlegen-2.0-vo\samples
podemos encontrar un ejemplo donde se usa una base de datos de una línea
aérea.

Esta base de datos debe ser creada antes de ejecutar ant:

Middlegen es llamado desde ANT.  Para que funcione este ejemplo debemos
configurar los ficheros:

  • build.properties.sample: Debemos renombrar este fichero como
    build.properties.  En este fichero indicaremos los valores de las
    diferentes variables necesarias para el fichero build.xml.  Aquí un
    parámetro interesante es gui que nos indica si usar la herramienta
    GUI de middlegen o no.
  • build.xml : En este fichero especificamos que se debe incluir el fichero
    correspondiente a la base de datos que usemos.  Puesto que usamos MySQL
    usamos el fichero ../config/database/mysql.xml el cual por defecto se
    conectará con la base de datos airlines que se encontrara en el localhost.

  • mysql.xml: En este fichero debemos configurar el usuario y password así
    como el driver que usará para conectarse con la base de datos.
    Debemos añadir el driver mysql-connector-java-3.0.11-stable-bin.jar al
    directorio C:\java\middlegen-2.0-vo\samples\lib
    puesto que con el de por defecto el 3.0.0 no es capaz de conectar con
    nuestro MySQL 4.1.1.
     

Una vez configurados estos parámetros podremos crear la base de datos
usando: ant create-tables:

A continuación ejecutando ant obtendremos los siguientes resultados:

Puesto que en el fichero build.properties aparece gui=true, se nos aparecerá
la herramienta visual de Hibernate,  una vez aprendida la mecánica de
Middlegen es recomendable saltarnos este paso para automatizar la tarea:

Esta herramienta visual muestra las tablas de la base de datos y las
relaciones que existen entre ellas, pudiendo modificar estas relaciones así
como distintos parámetros de JDO, Hibernate etc:

Pulsando el botón Generate se nos generarán los ficheros de
descripción de Hibernate así como los Value Objects correspondientes a cada
tabla.

Observamos que  se crea el directorio build donde aparecerán todos los
ficheros generados.  De entre ellos destacamos:

También nos damos cuenta de que el GUI de Middlegen crea el fichero airline-prefs.properties
en C:\java\middlegen-2.0-vo\samples\src
guardando las relaciones y la posición de cada tabla dentro del diagrama. 
Mientras este fichero exista se mantendrán los cambios en las relaciones entre
tablas aunque cambiemos la base de datos en el servidor.

5.Nuestro propio ejemplo

Siguiendo los pasos de la guía de desarrollo usaremos DBDesigner 4 para
modelar nuestra base de datos MySQL.

Con DBDesigner podemos crear nuestra base de datos o importar un ejemplo del
propio DBDesigner, así como hacer reingeniería sobre una base de datos ya
creada.  Si hemos instalado DBDesigner en  C:\Program Files\fabFORCE\
usaremos el ejemplo C:\Program Files\fabFORCE\Examples\bookshop.xml:

 

Sobre este ejemplo realizaremos varios campos:

  •     En las propiedades de cada tabla seleccionaremos tipo
    InnoDB:
  •  

 

  •     Cambiaremos el tipo de datos BOOL por TINYINT con
    valores por defecto 0 en caso de ser FALSE y 1 en caso de ser TRUE.

Una vez realizados estos cambios podremos exportar el diseño de la base de
datos a DDL (Data Definition Language) obteniendo el SQL con las senticias
CREATE de todas las tablas de nuestro diseño:

Podremos copiar estas sentencias SQL al porta papeles:

Para luego pegarlas en MySQL Control Center y crear nuestras tablas:

O bien usar la capacidad de sincronización de DBDesigner que nos creará
automáticamente la base de datos y nos mantendrá sincronizados los cambios
entre modelo y base de datos en ambos sentidos, es decir, si modificamos el
modelo se actualizará la base de datos y viceversa, si modificamos la base de
datos nos creará el modelo:

Una vez creada la base de datos a partir del modelo podemos usar Middlegen
usando como fichero de partida el fichero build.xml de ejemplo.  Nos
bastará cambiar los parámetros de conexión de la base de datos del fichero
mysql.xml indicándole ahora que la base de datos será bookshop:

 

Uno de los atractivos de la herramienta visual, es poder configurar tanto las
relaciones entre tablas (poder cambiar las relaciones de 1..n a 1..n etc) y
poder personalizar los tipos de datos por los que se traducirán los tipos de
datos SQL a Java:

Un ejemplo útil es poder especificar  sobre cada parámetro el tipo
Java por el que se traducirá el tipo SQL, así para el tipo date podemos
especificar el tipo Java por el que traducir.

 

6. Personalización de ANT

Dentro del fichero de ejemplo de ANT podemos encontrar elementos que no nos
sean de utilidad por lo que podemos prescindir de ellos.

Los principales targets de nuestro fichero ant serán:

  • Middlegen: Que nos generará los ficheros hbm.xml a partir
    de la base de datos:


Este target es configurable en múltiples parámetros, así podemos indicarle
que sólo genere determinadas tablas de nuestra base de datos:

 

  • hbm2java : que nos generara los POJO’s .java desde los ficheros hbm.xml:

 

Dejar respuesta

Please enter your comment!
Please enter your name here