【发布时间】:2011-11-17 14:39:57
【问题描述】:
在您可以将 Hibernate 库添加到项目的屏幕中,有两个选项,Hibernate 和 Hibernate JPA。
两者有什么区别?谷歌搜索没有提供解释。
【问题讨论】:
在您可以将 Hibernate 库添加到项目的屏幕中,有两个选项,Hibernate 和 Hibernate JPA。
两者有什么区别?谷歌搜索没有提供解释。
【问题讨论】:
我发现这可以提供一个很好的解释。 http://elope.wordpress.com/2007/09/06/difference-between-jpa-and-hibernate/
来自上面的博客: 所以如果我需要简明扼要的话:
a) JPA 是您的代码应该使用的 Persistence Api。
b) JPA Api 会将调用传递给实际的持久性提供程序(例如:Hibernate/TopLink)以完成实际工作。
c) 如果您从性能方面来看,它将取决于实际的持久性提供程序(Hibernate/TopLink),而不是 JPA 作为它的包装层。
d) 如果你从代码依赖的角度来看,JPA 更有意义,因为你的代码依赖于标准的 Java Api。
e) 如果您使用过 Hibernate,那么您会发现 JPA 中缺少某些功能,例如条件查询等。这并不意味着您不能在应用程序中编写条件查询,您需要从 JPA 获取 Session 对象实体管理器,现在你和 hibernate 项目一样好。
但是现在您的代码依赖于特定的 impl (Hibernate),接下来您可以看到 JPA (2.0) 中添加了更多内容
f) 你是否应该使用 JPA:我认为你应该使用,API 是干净的,虽然不是你需要的一切都是他们的,但这是向前迈出的一大步。
【讨论】:
我不知道您的“屏幕”是什么意思,但通常您可以直接使用 Hibernate(Hibernate API)或作为JPA 提供程序。由于 JPA 是一种标准 API,因此可以针对该 API 进行编码并在实现之间切换(Hibernate、EclipseLink、OpenJPA,...)。使用 Hibernate API 时,您会受到此限制,但您可以利用 JPA 未标准化的功能。
【讨论】: