我想知道Hibernate和Java EE 5中的简单持久性之间的区别/相似之处吗?
我不清楚Hibernate是否实现Java EE 5持久性实现,或者它是否是完全不同的后端系统数据表示方法。
我对Hibernate及其与Java EE 5教程中有关Java持久性的概念的关系感到困惑…您能否阐明Hibernate在实体和EJB上下文中的作用?
另外,我想知道其他方法(框架),例如JPA或Spring …
Java EE 5 的标准化持久性 API 是JPA 1.0,是EJB 2 CMP,JDO,Hibernate和TopLink API和产品的统一版本。Hibernate是一个早于JPA的ORM框架,并且对JPA的规范产生了重大影响(Hibernate的创建者是JPA背后的专家组的成员)。请记住,JPA只是一个API,您需要一个JPA 实现 才能使用它。
是的,Hibernate通过 Hibernate EntityManager 项目(依赖于 Hibernate Core )提供了JPA的实现(并且对其进行了扩展,Hibernate是JPA的超集)。
Hibernate可用作JPA持久性提供程序,即用作实际上持久EJB 3实体的代码(JPA规范是1.0版中EJB 3.0规范的一部分,现在是单独的规范)。
Spring不是持久性框架,Spring是IoC容器,它不能与Hibernate竞争。
Hibernate的JPA兼容替代方案包括TopLink Essentials(Java EE 5中的RI),EclipseLink(也是Java EE 6中的JPA 2.0的RI),OpenJPA,DataNucleus。
持久性的其他选择包括JDO(另一个标准化的持久性API),iBATIS(不是ORM,它更是一个数据映射器),JDBC(低级API)。
查看先前的答案)以获取概述和一些历史背景。