今天我试图创建一个使用 Hibernate 作为 ORM 的应用程序。所以在创作的时候我有一个疑问。使用 Hibernate 映射文件(.hbm 文件)或注释的最佳实践是什么?它的优点和缺点是什么?请帮助我理解。
6 回答
- 没有功能上的区别。你可以用这两种方法(几乎)做同样的事情
- xml 文件在 Java 有注解之前使用(在 1.5 中添加),因此它们可以被认为是一种过时的映射方式
- 通常首选使用 JPA 注释而不是特定于 hibernate 的注释;如果使用 xml - 有一种 JPA xml 格式,应该优先于休眠原生格式
问题是你的品味是什么——两种方式(大部分)都可以做同样的事情,不同之处在于如何写作。
使用注释,您可以将 Java 成员变量/getter 和映射直接放在一个地方。
XML 映射文件可以更好地概述表及其映射。
在我看来,xml 映射文件有助于更好地设计数据库和应用程序。Annonations 倾向于强制 Java 类 -> 映射 -> 数据库表的方向,这是错误的方向(数据库总是应该先设计 - 以后更改数据库表需要很多努力 - 大多数性能泄漏都在糟糕的数据库设计中 - Java 类可以随时轻松更改)。
如果 xml 文件有一个功能优势:如果您有不同的数据库,但结构不同,例如一个 Oracle 数据库和一个 MySQL 数据库,可能在表名和数据类型方面存在一些差异,那么您只需要将应用程序从一个数据库移植到另一个数据库需要编写一些新的映射文件。您不需要更改任何一行 Java 代码。这在注释中是不可能的。
我更喜欢使用 xml 映射文件。那是我的口味。
使用 XML 方法的一个很好的用例是,如果您要持久保存由另一个实用程序生成的对象,因此无法进行注释。
除此之外,我会使用注释,因为它倾向于使实现更简洁,并且您不太可能通过拼写错误的属性名称来引入错误。
这就是它在“TUTORIALS POINT”中所说的
“如果您要使您的应用程序可移植到其他符合 EJB 3 的 ORM应用程序,您必须使用注释来表示映射信息,但如果您想要更大的灵活性,那么您应该使用基于 XML 的映射”
对我来说,我更喜欢 XML 配置文件,而不是注释。因为这样我们就可以进行更改,只需最少的代码更改。
注释基于约定优于配置的原则:
http://en.wikipedia.org/wiki/Convention_over_configuration
而xml文件只是配置。
关于使用注释与使用配置有很多讨论。
从我的角度来看,我更喜欢注解,因为它更容易编写和维护。
Annotations are developed with java language and java developer easy to learn when compared with XML. And one more point in real time table names and column names are fixed 99%, so no need to change java code also but if you want to change table names and column names frequently you will move with XML finally cfg.xml file is manadatary because database may change.