Pregunta

Actualmente estoy usando Hibernate Herramientas 3.1;Me personalizado convención de nomenclatura y DAO de plantillas.La base de datos (SQL Server 2005) en la fase inicial de desarrollo y estoy a cargo de la reconstrucción de las asignaciones de las entidades, DAOs, configuración, lo que sea.Cada vez que tengo la ingeniería inversa de las tablas y así pierdo cada personalización he hecho en las asignaciones (*.hbm.xml los archivos) como el ajuste de la identidad columnas, escoger los campos que se utilizan en es igual y toString.Yo estaba considerando la posibilidad de escribir el diff XML en un archivo y de la "fusión" que en el generado de asignación (ver mi pregunta relacionada con la pero me estaba preguntando...hay alguna mejor práctica/herramienta para tratar con estos molestos, inevitable, tareas críticas?

¿Fue útil?

Solución

Me gustaría recomendar encarecidamente contra continuo de la ingeniería inversa.La ingeniería inversa es una gran cosa, pero los cambios deben ser manejados como cambios tanto en el hbm y la base de datos.

Utilizamos las migraciones para gestionar db cambios, y los cambios asociados en la hbm.Si Hibernate tiene que (yo creo que sí) usted puede desear mirar en anotaciones en lugar de un hbm, que puede ser un poco más fácil de mantener.

Otros consejos

Este es de dos años y medio de retraso, pero voy a ofrecer una opinión disidente.Usted debe ser capaz de realizar todas las personalizaciones que usted necesita para la asignación de archivos a través de la hibernate.reveng.xml archivo o una costumbre ReverseEngineeringStrategy.Para las clases en sí, siempre se debe generar a base de clases y extender con las clases que contiene el código personalizado.

Por ejemplo, generan com.de la empresa.vo.generado.CustomerGenerated y se extienden con la com.de la empresa.vo.personalizado.Cliente.Generación de código debe sobrescribir todas las clases en el paquete generado, pero nunca en el paquete personalizado (aunque puede tener Hibernate Herramientas generan estas clases personalizadas en el directorio de destino de modo que usted puede copiar y pegar los espacios en blanco en el directorio personalizado según sea necesario).De esta manera usted puede reemplazar los métodos para los iguales, toString, etc en las clases personalizadas y no perder los cambios cuando se vuelva a generar.También tenga en cuenta que la mejor práctica es no comprobar en el código generado en SCM.

Hay algunos buenos ejemplos en este sitio de cómo lograr esto usando Maven, la Hibernate3 plugin, y la construcción de plugin auxiliar.La mayoría de estos tienen muy útil respuestas por Pascal Thivent.Este método está trabajando muy bien para mí, y aunque no es un poco de una curva de aprendizaje es una cosa maravillosa para ser capaz de propagar cambios de base de datos a la aplicación con un solo comando Maven.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top