今天我试图创建一个使用Hibernate作为ORM的应用程序。所以在创建时我有一个疑问。什么是最佳实践,Hibernate映射文件(.hbm文件)或注释?它有什么优点和缺点?请帮助我理解。Hibernate映射文件和注释之间的区别
回答
- 没有功能差异。你可以这样做(几乎)同样的事情,与这两种方法之前,Java的有(1.5加)注释
- XML文件中使用,因此它们可以被认为是映射是一种过时的
- ,通常优选使用JPA注解而不是hibernate特有的;如果使用XML - 有一个JPA XML格式,应首选休眠原生一个
批注基于约定优于配置原则:
http://en.wikipedia.org/wiki/Convention_over_configuration
而XML文件只是配置。
关于使用注释vs使用配置有许多讨论。
从我的角度来看,我更喜欢注解,因为它更容易编写和维护。
我不得不恭敬地注意到基于约定而不是配置原则的注释。注释不是关于约定。它是一个简单的替代手段从XML到配置。 – M7Jacks 2014-08-29 13:32:44
一个很好的用例使用XML的方法是,如果你坚持认为已被其他工具生成,因此不能标注对象。
除此之外,我会因为它往往会借给自己一个更清洁的实现,你就不太可能通过引入拼写错误的属性名称错误使用的标注。
感谢提到外部来源的物体的持久性,没有想到这一点。 – 2014-12-14 00:42:22
问题是什么是你的品味 - 两种方式可以做到(大多数)相同,区别在于如何书写。
使用注释你有Java的成员变量/ getter和在一个地方直接映射到一起。
Xml映射文件可以更好地了解表及其映射。
在我看来,xml映射文件有助于更好地设计数据库和应用程序。 Annonations倾向于强制Java类 - >映射 - >数据库表的方向,这是错误的方向(数据库总是应该首先设计 - 稍后更改数据库表是很多努力的工作 - 大多数性能泄漏都是在糟糕的数据库设计中 - Java类很容易随时更改)。
如果有xml文件的一个功能优势:如果你有不同的数据库有结构上的差异,例如一个Oracle数据库和一个MySQL数据库,可能表名和数据类型有一些差异,然后从一个数据库移植你的应用程序到另一个你只需要写一些新的映射文件。您不需要更改一行Java代码。这是不可能的注释。
我更喜欢使用xml映射文件。那是我的的滋味。
这是它在“教程POINT”怎么说
“如果您打算让您的应用程序移植到其他EJB 3兼容的ORM应用程序,必须使用注释来表示映射信息,但仍然如果你想有更大的灵活性,那么你应该用基于XML的映射”
对于我走我宁愿XML配置文件,比标注。因为那样的话,我们可以做的改变,用最少的代码改变。
注解与Java语言和Java开发人员很容易在与XML相比,学习发展。另外还有一点实时表名和列名固定为99%,因此不需要更改java代码也 但是如果要频繁更改表名和列名,则将使用XML 最终移动cfg.xml文件Manadatary因为数据库可能会改变。
嗨,欢迎来到StackOverflow。 这真的很难理解你的问题,你可以改进它给我们一个代码示例或其他提示? – 2016-12-22 16:24:32
- 1. 在Hibernate中映射注释?
- 2. 地标和注释之间的区别
- 3. onetomany和manytomany注释之间的区别
- 4. 写入文件和映射内存之间有什么区别?
- 5. 带注释的Hibernate表映射
- 6. 父/子关系的Hibernate注释映射?
- 7. Hibernate枚举映射使用注释
- 8. 使用Hibernate注释映射自然键
- 9. 使用hibernate注释映射ManyToMany关系?
- 10. Hibernate @embeddable注释等价于XML映射文件吗?
- 11. servlet/servlet映射和过滤器/过滤器映射之间的区别?
- 12. str.format_map(映射)和str.format之间的区别是什么
- 13. 消息映射和覆盖windowproc之间的区别
- 14. NHibernate映射2.0和2.2之间的区别
- 15. Groovy的AnnotationNode和Java的注释之间有什么区别?
- 16. 休眠:映射文件或注释?
- 17. Hibernate注解映射比hbm.xml映射需要更多的时间
- 18. Java类之间的Hibernate ORM映射
- 19. playframework:@Transactional注释和JPA.withTransaction()方法之间的区别
- 20. RMI和反射之间的区别
- 21. Grails和JPA注释+ hibernate映射文件。如何摆脱这个错误?
- 22. DMA和内存映射IO之间有什么区别?
- 23. 如何<expr>和非<expr>映射之间区别?
- 24. X3D和X3DV文件之间的区别
- 25. Blob和文件之间的区别
- 26. hibernate注解错误映射
- 27. 在JPA(Hibernate)中注释字段和方法的区别?
- 28. 是否值得从手工制作的hibernate映射文件转换为注释?
- 29. PSR-4与类映射自动加载之间的区别?
- 30. 自我注释中的自我与自我之间的区别?
XML文件没有过时。更新的不一定更好。 – Johanna 2012-04-04 12:36:02
“他们可以考虑”。我没有坚持他们。我也注意到没有功能差异。但是在许多情况下,注释更可取。 – Bozho 2012-04-04 12:42:47