2012-04-04 10 views

Respuesta

12
  • no hay diferencia funcional. Usted puede hacer (casi) lo mismo con los dos métodos se han aplicado
  • archivos XML antes de Java tenía anotaciones (añadido en 1.5), por lo que se puede considerar una forma obsoleta de la cartografía
  • en general se prefiere el uso de anotaciones JPA en lugar de los específicos de hibernación; si el uso de XML - no es un formato XML APP, que debe ser preferido para hibernar nativa uno
+4

Los archivos XML no están desactualizados. Lo más nuevo no es necesariamente mejor. – Johanna

+1

"se pueden considerar". No insistí que lo fueran. También noté que no hay diferencia funcional. Pero las anotaciones son preferibles en muchos casos. – Bozho

0

Las anotaciones se basan en el principio de la convención sobre configuración:

http://en.wikipedia.org/wiki/Convention_over_configuration 

mientras que los archivos XML son sólo configuración.

Hay muchas discusiones sobre el uso de anotaciones versus el uso de la configuración.

stackoverflow link

Desde mi punto de vista, prefiero anotaciones porque es más fácil de escribir y mantener.

+1

Tendría que estar respetuosamente en desacuerdo con las anotaciones que se basan en el principio de la convención sobre la configuración. Las anotaciones no son sobre convenciones en absoluto. Es simplemente un medio alternativo para la configuración desde XML. – M7Jacks

4

Un buen caso de uso para usar el enfoque XML es si persiste en objetos que han sido generados por otra utilidad y, por lo tanto, no se pueden anotar.

Aparte de eso, utilizaría las anotaciones ya que tiende a prestarse a una implementación más limpia y es menos probable que introduzca errores al escribir mal los nombres de las propiedades.

+0

Gracias por mencionar la persistencia de objetos de fuentes externas, no había pensado en eso. –

8

La pregunta es cuál es su gusto; ambas maneras pueden hacer (la mayoría) lo mismo, la diferencia es cómo escribir.

Con las anotaciones, tiene la variable miembro de Java/getter y la asignación directamente en un solo lugar.

Los archivos de asignación Xml ofrecen una mejor visión general de la tabla y su asignación.

En mi opinión, los archivos de mapeo XML ayudan a un mejor diseño de la base de datos y la aplicación. Las anotaciones tienden a forzar la dirección Java class -> mapping -> database table, que es la dirección incorrecta (la base de datos siempre debe diseñarse primero; cambiar las tablas de la base de datos es un gran esfuerzo; la mayoría de las filtraciones de rendimiento tienen un mal diseño de base de datos). Las clases de Java se pueden cambiar fácilmente en cualquier momento).

allí si una ventaja funcional de archivos xml: Si tiene diferentes bases de datos con diferencias estructurales, por ejemplo una base de datos Oracle y una base de datos MySQL, tal vez algunas diferencias en los nombres de tablas y tipos de datos, a continuación, para portar su aplicación desde una base de datos para otro, solo necesita escribir algunos nuevos archivos de mapeo. No necesita cambiar una sola línea de código Java. Esto no es posible con anotaciones.

Prefiero usar archivos de mapeo xml. Eso es mi gusto.

2

Así es como se dice en el "punto de TUTORIALES"

"Si usted va a hacer su aplicación portable a otros aplicaciones EJB 3 ORM compatible, debe utilizar anotaciones para representar la información de asignación, pero aún si desea una mayor flexibilidad continuación, hay que ir con asignaciones basadas en XML"

Para mí, yo preferiría archivo de configuración XML, de anotación. Porque entonces podemos hacer cambios, con cambios mínimos de código.

-1

Las anotaciones se desarrollan con lenguaje java y el desarrollador java es fácil de aprender en comparación con XML. Y un punto más en nombres de columnas y nombres de tablas en tiempo real está fijado al 99%, por lo que no es necesario cambiar el código java también , pero si desea cambiar los nombres de tabla y columnas frecuentemente, se moverá con XML , finalmente el archivo cfg.xml es Administrativo porque la base de datos puede cambiar.

+0

Hola, bienvenidos a StackOverflow. Es muy difícil entender su pregunta, ¿puede mejorarla dándonos un ejemplo de código o alguna otra pista? –

Cuestiones relacionadas