Hibernate映射文件和注释之间的区别

今天我尝试使用Hibernate作为ORM创建一个应用程序。 因此,虽然创造我有一个疑问。 什么是最佳实践,Hibernate映射文件(.hbm文件)或注释? 它的优点和缺点是什么? 请帮助我理解。

  • 没有function差异。 你可以用两种方法(几乎)做同样的事情
  • 在Java注释之前使用了xml文件(在1.5中添加),因此它们可以被认为是过时的映射方式
  • 通常首选使用JPA注释而不是特定于hibernate的注释; 如果使用xml – 有一个JPA xml格式,它应该优先于hibernate本机格式

问题是你的口味是什么 – 两种方式都可以(大多数情况下)相同,区别在于如何写。

使用注释,您可以将Java成员变量/ getter和映射直接放在一起。

Xml映射文件可以更好地概述表及其映射。

在我看来,xml映射文件有助于更好地设计数据库和应用程序。 Annonations倾向于强制方向Java类 – >映射 – >数据库表,这是错误的方向(数据库总是应该首先设计 – 以后更改数据库表需要付出很多努力 – 大多数性能泄漏都是在糟糕的数据库设计中 – Java类可以随时轻松更改。

如果xml文件有一个function优势:如果你有不同的数据库有结构差异,例如一个Oracle数据库和一个MySQL数据库,可能是表名和数据类型的一些差异,然后将你的应用程序从一个数据库移植到另一个数据库你只有需要编写一些新的映射文件。 您无需更改单行Java代码。 注释无法做到这一点。

我更喜欢使用xml映射文件。 这是我的口味。

使用XML方法的一个很好的用例是,如果您持久化由另一个实用程序生成的对象,因此无法进行注释。

除此之外,我会使用注释,因为它倾向于使自己更清晰的实现,并且你不太可能通过拼写错误的属性名称来引入错误。

这就是“TUTORIALS POINT”中的说法

“如果要将应用程序移植到其他符合EJB 3的ORM应用程序,则必须使用注释来表示映射信息,但如果您需要更大的灵活性,那么您应该使用基于XML的映射”

对我来说,我更喜欢XML配置文件,而不是注释。 因为那时我们可以做更改,只需最少的代码更改。

注释基于约定优于配置的原则:

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

而xml文件只是配置。

关于使用注释与使用配置的讨论很多。

stackoverflow链接

从我的角度来看,我更喜欢注释,因为它更容易编写和维护。

使用java语言开发注释,与XML相比,Java开发人员易于学习。 并且实时表名和列名中的另一个点固定为99%,因此也不需要更改java代码,但如果要经常更改表名和列名,则最终将使用XML移动cfg.xml文件是manadatary,因为数据库可能会改变