在休眠中定义实体4

问题描述:

我刚刚开始使用Hibernate 4,并且我注意到它们是定义实体的两种方法。通过定义一个xml文件hbm并将它与一个bean进行映射,或者只需定义一个bean并使用注释与DB中的表进行映射(@Entity,@column ..等)。在休眠中定义实体4

我的问题是两种方法有什么区别? 很抱歉,如果这个问题很简单,但我不能在网上找到我的答案..

感谢您的帮助

使用你的模型(实体)结合Hibernate框架相当紧密的注解(你在他们之间引入耦合)。另一方面,由于您不必在XML和Java源文件之间切换,因此您的源代码变得更加可读。

最初Hibernate仅支持XML映射,后面添加了注释(在Java 5中引入它们之后)。大多数Java开发人员都非常青睐注释,因为他们确实很明显地表明一个类表示一个Hibernate实体,它具有什么约束以及它如何与应用程序中的其他实体相关联。另一方面,使用XML定义将您的源代码从Hibernate中分离出来,并且您可以轻松切换到另一个库,而无需修改Java源代码。不过,使用Java Persistence API以及它的便携式注释会让你做得更好。它赋予使用可以委托给任何ORM框架(Hibernate,ibatis,EclipseLink等)的统一ORM API的能力。在JPA的配置中更改联机并将新的ORM添加到您的项目类路径中可轻松切换框架。在实践中,很少有公司直接使用Hibernate(除非他们需要一些独特的功能) - 它通常与JPA结合使用。很少有人使用XML实体定义 - 我在很长一段时间里还没有和他们一起开发过一个项目。

最大的区别是你如何处理Hibernate。有些人可能更喜欢XML配置而不是注释,反之亦然。

使用XML配置可以更好地控制Hibernate,并让您可以将配置文件保存在一个地方。

另一方面,JPA Annotations允许更直观的持久性配置,同时保持您的业务逻辑免于供应商锁定。您可能还想检查this thread