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.





Replica a Luis Miguel Gracia Luis Cancelar la respuesta