我想知道Java EE 5中Hibernate与简单持久性之间的差异/相似之处吗?
我不清楚Hibernate是否实现了Java EE 5持久性实现,或者它是否是一种完全不同的后端系统数据表示方法。
我对Hibernate及其与Java EE 5教程中给出的关于java持久性的概念的关系感到困惑...你能否阐明Hibernate在实体和EJB环境中的作用?
另外,我想知道其他方法(框架),如JPA或Spring ......
答案 0 :(得分:4)
我想知道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)引用最着名的。
选中此previous answer以获取概述和一些历史背景。
答案 1 :(得分:1)
alt text http://www.hibernate.org/mainColumnParagraphs/00/imageBinary/HibernateStacks.png
过去,在古代的J2EE时代,Hibernate在持久性世界中是一个主要玩家。有竞争对手,但持久性代码不可交换。后来,当Java EE 5(J2EE的后继者)正在开发中时,新的Java持久性API(JPA)是在Hibernate的领导者Gavin King的帮助下指定的,其目标是更多地抽象持久性并在单一合同。这样,可以在不更改代码的情况下轻松地在JPA实现之间进行选择和交换(就像使用JDBC API一样)。到目前为止,每个Hibernate JPA,EclipseLink(以前称为TopLink)和OpenJPA都属于JPA实现。
我认为你的混淆实际上是在“Good Old”Hibernate和现代Hibernate JPA之间。希望现在已经解决了。
答案 2 :(得分:1)
当JCP专家组(JSR 220)开发JPA(Java EE 5持久性标准)时,已经从现有的Hibernate(也来自JDO)中获取了很多想法。 Hibernate的创始人Gavin King本人也是专家组的成员。
在最终的JPA规范发布后,Hibernate成为它的开源实现(自3.2版本起)。 Hibernate仍然具有更丰富的功能集,并且通常可以更快地生成新功能,因为开源开发流程往往比Java社区流程更快。
JPA的其他实现是:
其他方法是:
答案 3 :(得分:0)
EE5中描述的JPA规范只是一个规范。这意味着它不是产品。 JPA只是一组定义,不同的提供商必须完成“JPA投诉”
Hibernate只是另一个“可插入”持久性提供程序,这意味着该产品实现了JPA规范给出的定义。您可以找到其他类似的产品,如TopLink或Apache的OpenJPA。
就是这样。
答案 4 :(得分:0)
稍微偏离主题,但JPA意味着“面向会话”的架构。那就是你的bean被附加/分离到EntityManager并且你持久化/合并/刷新entityManager。
如果您正在寻找ORM的“无会话”方法(没有附加/分离的持久化/合并/刷新),那么您还可以查看Ebean ORM,它也使用JPA Annotations进行映射。您还可以将其描述为“Ebean提供持久性上下文的自动管理”。