Hoy estaba intentando crear una aplicación utilizando Hibernate como ORM. Entonces al crear tuve una duda. ¿Cuál es la mejor práctica para usar, el archivo de mapeo de Hibernate (archivo .hbm) o anotaciones? ¿Cuáles son los pros y los contras de esto? Por favor ayúdame a entender.Diferencia entre el archivo de asignación de Hibernate y la anotación
Respuesta
- 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
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.
Desde mi punto de vista, prefiero anotaciones porque es más fácil de escribir y mantener.
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
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.
Gracias por mencionar la persistencia de objetos de fuentes externas, no había pensado en eso. –
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.
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.
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.
Hola, bienvenidos a StackOverflow. Es muy difícil entender su pregunta, ¿puede mejorarla dándonos un ejemplo de código o alguna otra pista? –
- 1. Diferencia entre la entidad JPA y la entidad Hibernate
- 2. Diferencia entre las anotaciones de JPA Cascade y la anotación de Hibernate Cascade
- 3. Hibernate: Diferencia entre session.get y session.load
- 4. Diferencia entre la herencia rasgo y tipo auto anotación
- 5. Diferencia entre FlushMode.AUTO y FlushMode.ALWAYS en Hibernate?
- 6. Diferencia entre el archivo .o y .ko
- 7. ¿Cuál es la diferencia entre persist() y merge() en Hibernate?
- 8. ¿Cuál es la diferencia entre flush y commit en Hibernate?
- 9. Hibernate: ¿cuál es la diferencia entre MySQLDialect y MySQLInnoDBDialect?
- 10. Problema de asignación con Hibernate
- 11. Anotación Hibernate o configuración XML
- 12. Hibernate: ¿diferencia entre anotaciones y anotaciones de commons?
- 13. Diferencia entre el archivo .keystore y el archivo .jks
- 14. Diferencia entre el archivo HDF5 y el archivo PyTables
- 15. Ignorar Hibernate @Where anotación
- 16. Hibernate: asignación de archivos o anotaciones?
- 17. ¿Cuál es la diferencia entre: = y + = en el archivo make?
- 18. ¿Cuál es la diferencia entre .sqlite y el archivo .db?
- 19. ¿Cuál es la diferencia entre la asignación y la creación de instancia de cadena?
- 20. ¿Cuál es la diferencia entre la asignación de división que divide toda la lista y la asignación directa?
- 21. Diferencia entre Restrictions.like y .ilike en Hibernate API Criterios
- 22. ¿Cuál es la diferencia entre omnifunc y completefunc, excepto la asignación de teclas de invocación?
- 23. La diferencia entre $ * y $ @
- 24. ¿Anotación de rango entre nada y 100?
- 25. Diferencia entre la ubicación del archivo de configuración php.ini y el archivo de configuración cargada?
- 26. Campo de texto usando Hibernate anotación
- 27. Diferencia entre archivo .jar y .dll
- 28. Validación de primavera vs validación de Hibernate usando la anotación
- 29. ¿Cuál es la diferencia entre una propiedad de lectura y una propiedad de asignación no atómica?
- 30. Hibernate + Spring MVC: configuración de asignación de objetos
Los archivos XML no están desactualizados. Lo más nuevo no es necesariamente mejor. – Johanna
"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