¿Vale la pena el esfuerzo de pasar de un archivo de mapeo de hibernación hecho a mano a anotaciones?

StackOverflow https://stackoverflow.com/questions/82223

  •  09-06-2019
  •  | 
  •  

Pregunta

Tengo una aplicación web cuyo código base original se desarrolló con un archivo de mapeo de hibernación hecho a mano.Desde entonces, me he vuelto bastante competente en "codificar" mi archivo hbm.xml.Pero todos los chicos geniales están usando anotaciones estos días.

Entonces, la pregunta es: Vale la pena el esfuerzo ¿Refactorizar mi código para usar anotaciones de hibernación?¿Ganaré algo además de estar a la moda y ser moderno?¿Perderé parte del control que tengo en mi archivo de mapeo codificado a mano existente?

Una subpregunta es, ¿cuánto esfuerzo será? Me gustan mis bases de datos sencillas y mezquinas.El mapeo cubre sólo una docena de objetos de dominio, incluidos dos conjuntos, algunas subclases y aproximadamente 8 tablas.

Gracias, queridos SOpedians, de antemano por sus opiniones informadas.

¿Fue útil?

Solución

"Si no está roto, ¡no lo arregles!"

Soy un tipo de persona POJO/POCO anticuado de todos modos, pero ¿por qué cambiar a anotaciones sólo para ser genial?Hasta donde yo sé, puedes hacer la mayoría de las cosas como anotaciones, pero las asignaciones más complejas a veces se expresan más claramente como XML.

Otros consejos

Una cosa que obtendrá al usar anotaciones en lugar de un archivo de mapeo externo es que su información de mapeo estará en clases y campos, lo que mejora la capacidad de mantenimiento.Agrega un campo, inmediatamente agrega la anotación.Quitas uno, también quitas la anotación.cambia el nombre de una clase o un campo, la anotación está ahí y también puede cambiar el nombre de la tabla o columna.Si realiza cambios en la herencia de clases, se tendrá en cuenta.No es necesario que vayas a editar un archivo externo algún tiempo después.esto hace que todo sea más eficiente y menos propenso a errores.

Por otro lado, perderá la vista global que solía brindarle su archivo de mapeo.

Recientemente hice ambas cosas en un proyecto y encontré:

  1. Prefiero escribir anotaciones en XML (funciona bien con escritura estática de Java, autocompletar en IDE, refactorización, etc.).Me gusta ver todo entretejido en lugar de ir y venir entre código y XML.
  2. Codifica la información de la base de datos en tus clases.Algunas personas lo encuentran asqueroso e inaceptable.No puedo decir que me molestó.Tiene que ir a alguna parte y vamos a reconstruir la WAR para variar de todos modos.
  3. De hecho, llegamos hasta las anotaciones JPA, pero definitivamente hay casos en los que las anotaciones JPA no son suficientes, por lo que tuvimos que usar anotaciones de Hibernate o configuración para modificar.
  4. Tenga en cuenta que en realidad puede utilizar tanto anotaciones como archivos hbm.Podría ser un buen híbrido que especifica la parte O en anotaciones y la parte R en archivos hbm, pero parece más problemático de lo que vale.

Por mucho que me guste pasar a cosas nuevas y potencialmente mejores, debo recordar que no debo meterme con cosas que no están rotas.Entonces, si tener las asignaciones de hibernación en un archivo separado le funciona ahora, no lo cambiaría.

Definitivamente prefiero las anotaciones, ya que las he usado ambas.Son mucho más fáciles de mantener y, dado que no se trata de tantas clases para reasignar, diría que vale la pena.Las anotaciones facilitan mucho la refactorización.

Todas las funciones son compatibles tanto en XML como en anotaciones.Aún podrá anular sus anotaciones con una declaración xml.

En cuanto al esfuerzo, creo que vale la pena, ya que podrá verlo todo en un solo lugar y no cambiar entre su código y el archivo xml (a menos, por supuesto, que esté usando dos monitores;)).

Lo único que ganará al usar anotaciones

Probablemente diría que esto es el Lo que quieres ganar con el uso de anotaciones.Debido a que no obtienes seguridad en el tiempo de compilación con NHibernate, esta es la mejor opción.

"Si no está roto, ¡no lo arregles!"

@Macka - Gracias, necesitaba escuchar eso.Y gracias a todos por vuestras respuestas.

Si bien me encuentro en la muy afortunada posición de tener una loco Tengo una gran cantidad de control profesional y creativo sobre mi trabajo, y puedo incorporar casi cualquier tecnología, biblioteca o herramienta por cualquier motivo (excepto cosas costosas), incluidas "porque todos los chicos geniales lo están usando"...Realmente no tiene sentido trasladar lo que equivale a una parte significativa del núcleo de un proyecto existente.

En algún momento probaré las anotaciones de Hibernate o JPA con un proyecto nuevo.Desafortunadamente, rara vez recibo proyectos nuevos completamente independientes.

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