我一直在阅读关于JPA和EJB3,并希望确认我对他们的关系的理解是正确的.这是我认为我知道的
JPA是由许多供应商实施的规范,包括:
> JBoss / Hibernate
> Oracle / TopLink Essentials(现为EclipseLink)
> Apache / OpenJPA
EJB3是在应用服务器中实现的规范,包括:
>玻璃鱼
> JBoss
它是否正确?
解决方法
Java EE 5中引入的Java Persistence API是EJB 3的一个子集,并替代EJB 2.0 CMP的持久性解决方案. JPA 1.0已经被定义为EJB 3.0规范(
@L_301_1@)的一部分,但可以在没有EJB容器的情况下使用.在Java EE 6中,JPA 2.0具有独立的规范(
JSR 317),在EJB 3.1规范(
JSR 318)之外.所以总结一下:
> JPA是EJB 3的一个子集,实现由持久化提供程序提供,如Toplink Essentials / EclipseLink,Hibernate,Kodo / OpenJPA(Kodo是从中导出OpenJPA源代码的项目,Kodo现在又是基于OpenJPA )等
> EJB 3是一个更广泛的规范,实现由依赖持久性提供者的应用程序服务器的EJB容器提供:
> GlassFish v3的默认持久性提供程序是EclipseLink> JBoss的默认持久性提供程序是Hibernate> WebLogic 10.3.1的默认持久性提供程序是OpenJPA / Kodo或EclipseLink> WebSphere 6.1的默认持久性提供程序是(基于)OpenJPA