JPA / EJB3关系

时间:2010-05-18 16:27:51

标签: java jpa ejb-3.0

我一直在阅读有关JPA和EJB3的内容,并想确认我对他们关系的理解是正确的。这就是我认为我知道的......

JPA是由许多供应商实施的规范,包括:

  • 的JBoss /休眠
  • Oracle / TopLink Essentials(现在是EclipseLink)
  • 的Apache / OpenJPA的

EJB3是在Application Server中实现的规范,包括:

  • Glassfish的
  • 的JBoss

它是否正确?

3 个答案:

答案 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容器提供:

    • GlassFish v3的默认持久性提供程序是EclipseLink
    • JBoss的默认持久性提供程序是Hibernate
    • WebLogic 10.3.1+的默认持久性提供程序是OpenJPA / Kodo或EclipseLink
    • WebSphere 6.1+的默认持久性提供程序是(基于)OpenJPA

答案 1 :(得分:0)

是的,JPA1和JPA2也由DataNucleus实现,它还实现了JDO1,JDO2,JDO3以及OGC Simple Feature规范;并且也是唯一真正独立的实现(不依赖于大型软件供应商)。显然,用户可以自由地将他们希望的JPA实现插入到EJB3环境中

答案 2 :(得分:0)

是的,我也有谷歌OpenJPA,但这是正确的