我想知道 Java EE 5 中 Hibernate 和简单持久性之间的区别/相似之处?
我不清楚 Hibernate 是否实现了 Java EE 5 持久性实现,或者它是否是一种完全不同的后端系统数据表示方法。
我对 Hibernate 及其与 Java EE 5 教程中给出的关于 Java 持久性的概念的关系感到困惑……你能澄清 Hibernate 在实体和 EJB 上下文中的作用吗?
另外,我想知道其他方法(框架),例如 JPA 或 Spring ...
我想知道 Java EE 5 中 Hibernate 和简单持久性之间的区别/相似之处?
我不清楚 Hibernate 是否实现了 Java EE 5 持久性实现,或者它是否是一种完全不同的后端系统数据表示方法。
我对 Hibernate 及其与 Java EE 5 教程中给出的关于 Java 持久性的概念的关系感到困惑……你能澄清 Hibernate 在实体和 EJB 上下文中的作用吗?
另外,我想知道其他方法(框架),例如 JPA 或 Spring ...
我想知道 Java EE 5 中 Hibernate 和简单持久性之间的区别/相似之处?
Java EE 5的标准化持久化API是 JPA 1.0,是 EJB 2 CMP、JDO、Hibernate 和 TopLink API 和产品的一种统一版本。Hibernate 是一个早于 JPA 的 ORM 框架,对 JPA 的规范产生了很大的影响(Hibernate 的创建者是 JPA 背后专家组的成员)。请记住,JPA 只是一个 API,您需要 JPA 的实现才能使用它。
我不清楚 Hibernate 是否实现了 Java EE 5 持久性实现,或者它是否是一种完全不同的后端系统数据表示方法。
是的,Hibernate 通过Hibernate EntityManager项目(依赖于Hibernate Core )提供了 JPA 的实现(并且还扩展了它,Hibernate 是 JPA 的超集)。
我对 Hibernate 及其与 Java EE 5 教程中给出的关于 Java 持久性的概念的关系感到困惑……你能澄清 Hibernate 在实体和 EJB 上下文中的作用吗?
Hibernate 可以用作 JPA 持久性提供程序,即作为实际持久化 EJB 3 实体的代码片段(JPA 规范是 1.0 版 EJB 3.0 规范的一部分,现在它是一个单独的规范)
另外,我想知道其他方法(框架),例如 JPA 或 Spring ...
Spring 不是一个持久化框架,Spring 是一个 IoC 容器,它不与 Hibernate 竞争。
JPA 兼容的 Hibernate 替代方案包括 TopLink Essentials(Java EE 5 中的 RI)、EclipseLink(也是 Java EE 6 中 JPA 2.0 的 RI)、OpenJPA、DataNucleus。
其他持久性选项包括 JDO(另一种标准化的持久性 API)、iBATIS(不是 ORM,它更像是一个数据映射器)、JDBC(低级 API),举几个例子。
检查此先前的答案以获取概述和一些历史背景。
当 JCP 专家组 (JSR 220) 开发 JPA(Java EE 5 持久性标准)时,很多想法都来自现有的 Hibernate(也来自 JDO)。Hibernate 的创始人 Gavin King 本人也是专家组的成员。
在最终的 JPA 规范发布后,Hibernate 成为了它的开源实现(从 3.2 版开始)。Hibernate 仍然具有更丰富的功能集,并且通常会更快地生成新功能,因为开源开发过程往往比 Java 社区过程更快。
JPA 的其他实现是:
其他方法是:
EE5 中描述的 JPA 规范只是一个规范。这意味着它不是产品。JPA 只是不同提供商必须完成的一组定义才能成为“JPA 投诉”
Hibernate 只是另一个“可插入的”持久性提供者,这意味着该产品实现了 JPA 规范给出的定义。您可以找到其他类似的产品,例如 TopLink 或 Apache 的 OpenJPA。
这就对了。
稍微偏离主题,但 JPA 暗示了“面向会话”的架构。也就是说,您的 bean 已附加/分离到 EntityManager,并且您持久/合并/刷新 entityManager。
如果您正在寻找 ORM 的“无会话”方法(没有附加/分离的持久化/合并/刷新),那么您还可以查看 Ebean ORM,它也使用 JPA 注释进行映射。您也可以将其描述为“Ebean 提供持久性上下文的自动管理”。