Configuración XML versus configuración basada en anotaciones [cerrado]

Resuelto abarax asked hace 16 años • 16 respuestas

En algunos proyectos grandes en los que he estado trabajando últimamente, parece cada vez más importante elegir uno u otro (XML o Anotación). A medida que los proyectos crecen, la coherencia es muy importante para la mantenibilidad.

Mis preguntas son: ¿cuáles son las ventajas de la configuración basada en XML sobre la configuración basada en anotaciones y cuáles son las ventajas de la configuración basada en anotaciones sobre la configuración basada en XML?

abarax avatar Oct 08 '08 19:10 abarax
Aceptado

Las anotaciones tienen su utilidad, pero no son la única solución mágica para acabar con la configuración XML. ¡Recomiendo mezclar los dos!

Por ejemplo, si usa Spring, es completamente intuitivo usar XML para la parte de inyección de dependencia de su aplicación. Esto aleja las dependencias del código del código que lo usará; por el contrario, el uso de algún tipo de anotación en el código que necesita las dependencias hace que el código sea consciente de esta configuración automática.

Sin embargo, en lugar de utilizar XML para la gestión transaccional, marcar un método como transaccional con una anotación tiene mucho sentido, ya que esta es información que un programador probablemente desearía saber. Pero que una interfaz se vaya a inyectar como SubtypeY en lugar de SubtypeX no debería incluirse en la clase, porque si ahora desea inyectar SubtypeX, debe cambiar su código, mientras que antes tenía un contrato de interfaz de todos modos, así que con XML, sólo necesitaría cambiar las asignaciones XML y hacerlo es bastante rápido y sencillo.

No he usado anotaciones JPA, así que no sé qué tan buenas son, pero yo diría que dejar el mapeo de beans a la base de datos en XML también es bueno, ya que al objeto no debería importarle de dónde vino su información. , sólo debería importarle lo que puede hacer con su información. Pero si te gusta JPA (no tengo ninguna experiencia con él), hazlo.

En general: si una anotación proporciona funcionalidad y actúa como un comentario en sí misma, y ​​no vincula el código a algún proceso específico para funcionar normalmente sin esta anotación, entonces opte por las anotaciones. Por ejemplo, un método transaccional marcado como transaccional no elimina su lógica operativa y también sirve como un buen comentario a nivel de código. De lo contrario, esta información probablemente se exprese mejor como XML, porque aunque eventualmente afectará el funcionamiento del código, no cambiará la funcionalidad principal del código y, por lo tanto, no pertenece a los archivos fuente.

MetroidFan2002 avatar Oct 08 '2008 15:10 MetroidFan2002

Aquí hay un problema más amplio, el de los metadatos externalizados frente a los integrados. Si su modelo de objetos solo va a persistir de una manera, entonces los metadatos incorporados (es decir, las anotaciones) son más compactos y legibles.

Sin embargo, si su modelo de objetos se reutilizó en diferentes aplicaciones de tal manera que cada aplicación quería conservar el modelo de diferentes maneras, entonces externalizar los metadatos (es decir, descriptores XML) se vuelve más apropiado.

Ninguno de los dos es mejor, por lo que ambos son compatibles, aunque las anotaciones están más de moda. Como resultado, los nuevos marcos de trabajo, como el JPA, tienden a poner más énfasis en ellos. Las API más maduras, como Hibernate nativa, ofrecen ambas, porque se sabe que ninguna es suficiente.

skaffman avatar Jun 12 '2009 13:06 skaffman