Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate映射文件和注释之间的差异_Java_Hibernate - Fatal编程技术网

Java Hibernate映射文件和注释之间的差异

Java Hibernate映射文件和注释之间的差异,java,hibernate,Java,Hibernate,今天我尝试使用Hibernate作为ORM创建一个应用程序。所以在创作的时候我有一个疑问。使用Hibernate映射文件(.hbm文件)或注释的最佳实践是什么?它的优点和缺点是什么?请帮助我理解。 没有功能上的区别。你可以用这两种方法做(几乎)相同的事情 xml文件是在Java有注释(在1.5中添加)之前使用的,因此可以认为它们是一种过时的映射方式 通常首选使用JPA注释,而不是特定于hibernate的注释;如果使用xml,有一种JPA xml格式,应该优先于hibernate原生格式 注释基

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

  • 没有功能上的区别。你可以用这两种方法做(几乎)相同的事情
  • xml文件是在Java有注释(在1.5中添加)之前使用的,因此可以认为它们是一种过时的映射方式
  • 通常首选使用JPA注释,而不是特定于hibernate的注释;如果使用xml,有一种JPA xml格式,应该优先于hibernate原生格式

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

http://en.wikipedia.org/wiki/Convention_over_configuration
而xml文件只是配置文件

关于使用注释和使用配置,有很多讨论


在我看来,我更喜欢注释,因为它更易于编写和维护。

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


除此之外,我会使用注释,因为它倾向于使用更干净的实现,并且您不太可能通过拼写错误的属性名引入bug。

问题是您的喜好是什么-两种方法可以(大部分)做相同的事情,不同的是如何编写

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

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

在我看来,xml映射文件有助于更好地设计数据库和应用程序。注释倾向于强制Java类->映射->数据库表的方向,这是错误的方向(数据库总是应该先设计-以后更改数据库表是一项很大的工作-大多数性能泄漏都发生在糟糕的数据库设计中-Java类很容易随时更改)

xml文件的一个功能优势是:如果您有结构不同的不同数据库,例如一个Oracle数据库和一个MySQL数据库,可能在表名和数据类型上存在一些差异,那么为了将应用程序从一个数据库移植到另一个数据库,您只需要编写一些新的映射文件。您不需要更改一行Java代码。这在注释中是不可能的

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

这是“教程要点”中的说法

“如果要使应用程序可移植到其他EJB3兼容的ORM应用程序中,则必须使用注释来表示映射信息,但如果仍希望更大的灵活性,则应使用基于XML的映射。”


对我来说,我更喜欢XML配置文件,而不是注释。因为这样我们就可以用最少的代码更改进行更改。

注释是用java语言开发的,与XML相比,java developer易于学习。实时表名和列名中还有一点是99%固定的,因此也不需要更改java代码 但是,如果您想经常更改表名和列名,您将使用XML
最后,cfg.xml文件是管理数据的,因为数据库可能会更改

XML文件没有过时。更新的不一定更好,“可以考虑”。我没有坚持他们是。我还注意到没有功能上的差异。但在许多情况下,注释是更可取的。我不得不尊重地不同意注释是基于约定而非配置的原则。注释与约定无关。这只是从XML进行配置的一种替代方法。感谢您提到来自外部源的对象的持久性,我没有想到这一点。您好,欢迎使用StackOverflow。你的问题真的很难理解,你能给我们一个代码示例或其他提示来改进它吗?