Generación automatica de Entidades bajo uso de HibernateTools

Algunos de nosotros formamos parte de un equipo que tiene la misión de generar una Arquitectura de Referencia para diversos proyectos, con este objetivo una de las primeras elecciones, es el cómo gestionar la persistencia, en otros artículos se han descrito las ventajas e inconvenientes de cada una de las posibles opciones que se tienen; vamos a suponer que se elige JPA/Hibernate.

El paso siguiente, sería plantearse la posibilidad de realizar la generación automática de las clases de persistencia a partir del metamodelo de la base de datos y una configuración de dicha información, no vamos a entrar en la conveniencia o no de realizar esta generación automática, lo dejamos para otro artículo de interés.

Suponiendo que se ha decidido realizar un generador automático, una de las posibilidades se realizarlo con las HibernateTools

http://www.hibernate.org/subprojects/tools.html

Vamos a describir los pasos a seguir para la realización de esta tarea:

1) Se tendrá un fichero htools-generate-persistence.properties que contendrá la información con los datos de conectividad a la base de datos

2) Se tendrá un fichero hreveng.xml que contendrá la correspondiente entre los mapeos de tipos de datos de la base de datos y los que se tienen que generar. Este se opcional y en caso de no existir realizará los estándar.

3) Se utilizará la herramienta ant que posee las HibernateTools para la configuración de la misma.

Como se puede ver se tiene que configurar la tarea para que lea los ficheros anteriores y para la correcta configuración de la tarea.

Se tiene que resaltar los siguientes elementos que vamos a explicar posteriormente, la ClaseDeEstrategia, los templates y la ClaseDeHelper

4) Los templates: la generación de las entidades está basada en una serie de plantillas que son las que se toman de modelo para la generación de las entidades estas plantillas se puede modificar o crear para la correcta generación de las clases de persistencia.

Permite realizar cambios en el nombre de las entidades a generar, modificar la herencia o implementación de interfaces, añadir comentarios, etc.. Estas plantillas son de carácter público.

5) ClaseDeEstrategia: esta clase permite la modificación de algunos de los elementos que se van a generar como por ejemplo, nombre de las entidades, excluir alguna de las tablas, uso y nombre de la columna del control de OptimistLock, excluir alguna de las columnas de determinadas tablas.

6) ClaseDeHelper: a nivel avanzado se puede modificar las plantillas con métodos complejos, estos tienen que estar implementado dentro de clase de Helper que puede ser cargada y tratada dentro del ciclo de vida de la generación de las entidades de las HibernateTools. Con estas clases se permite realizar cualquier tratamiento complejo sin ningún tipo de restricción y hacer uso de todas las posibilidades a nivel de configuración.

Ejemplo:

El ejemplo expuesto modifica una plantilla para llamar a la clase Helper, y poder generar de forma correcta el uso de una determinada secuencia (en este caso de Oracle) para la clave primaria de una entidad.

Después de realizar todos estos pasos se han obtenido las entidades que se adecuen a la arquitectura a realizar.

Respuestas

  1. Miguel Angel o Luis miguel, una pregunta ¿Hibernate o IBatis?

    1. Intentando responderte de forma sencilla, y entendiendo que al hacerlo se cae en generalidades diría que Hibernate en general e IBatis cuando el procesamiento o consulta de datos sea muy grande o complejo como para necesitar un manejo de más bajo nivel de estos.

  2. En mi opinión no es posible responder a esta cuestión directamente, pues ambos frameworks tienen caracteristicas dispares y su uso deberia ser por distintos motivos. En resumen, habria que evaluar parametros como: tamaño, rendimiento, disponibilidad, etc.

    En anteriores post, se comentaban las caracteristicas de iBatis.

  3. […] que vía MetaData eran capaces de hacer introspección, además de tener Torque o HibernateTools (ejemplo de uso en el blog) me da que para cuando quiera hacerlo alguien se me habrá […]

Deja un comentario