在Hibernate 4中定义实体

时间:2012-03-20 09:14:39

标签: hibernate

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

我的问题是两种方法之间有什么区别? 对不起,如果问题很简单但我在网上找不到答案..

感谢您的帮助

2 个答案:

答案 0 :(得分:3)

使用注释,您可以非常紧密地将模型(实体)绑定到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实体定义 - 我在很长一段时间内没有与他们合作过一个项目。

答案 1 :(得分:1)

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

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

另一方面,JPA Annotations允许更直观的持久性配置,同时保持业务逻辑不受供应商锁定。

您也可以查看this thread