我一直在阅读有关JPA和EJB3的内容,并想确认我对他们关系的理解是正确的。这就是我认为我知道的......
JPA是由许多供应商实施的规范,包括:
EJB3是在Application Server中实现的规范,包括:
它是否正确?
答案 0 :(得分:21)
Java EE 5中引入的Java Persistence API是EJB 3的子集,它取代了EJB 2.0 CMP的持久性解决方案。 JPA 1.0已被定义为EJB 3.0规范(JSR 220)的一部分,但可以在EJB容器之外和之外使用。在Java EE 6中,JPA 2.0在EJB 3.1规范(JSR 317)之外有其单独的规范(JSR 318)。总结一下:
JPA是EJB 3的子集,实现由持久性提供程序提供,如Toplink Essentials / EclipseLink,Hibernate,Kodo / OpenJPA(Kodo是OpenJPA源代码的项目。衍生和Kodo现在反过来基于OpenJPA)等
EJB 3是一个更广泛的规范,实现由依赖于持久性提供程序的应用程序服务器的 EJB容器提供:
答案 1 :(得分:0)
是的,JPA1和JPA2也由DataNucleus实现,它还实现了JDO1,JDO2,JDO3以及OGC Simple Feature规范;并且也是唯一真正独立的实现(不依赖于大型软件供应商)。显然,用户可以自由地将他们希望的JPA实现插入到EJB3环境中
答案 2 :(得分:0)
是的,我也有谷歌OpenJPA,但这是正确的