The Java Persistence API introduced in Java EE 5 is a subset of EJB 3 and replaces the persistence solution of EJB 2.0 CMP. JPA 1.0 has been defined as part of the EJB 3.0 specification (JSR 220) but can be used without and outside an EJB container. In Java EE 6, JPA 2.0 has its separate specification (JSR 317), outside the EJB 3.1 specification (JSR 318). So to summarize:
JPA is a subset of EJB 3 and implementations are provided by persistence providers like Toplink Essentials / EclipseLink, Hibernate, Kodo / OpenJPA (Kodo is the project from which the OpenJPA source code was derived and Kodo is now, in turn, based on OpenJPA), etc.
EJB 3 is a wider specification and implementations are provided by the EJB container of application servers that rely on persistence providers:
The default persistence provider of GlassFish v3 is EclipseLink
The default persistence provider of JBoss is Hibernate
The default persistence provider of WebLogic 10.3.1+ is OpenJPA/Kodo or EclipseLink
The default persistence provider of WebSphere 6.1+ is (based on) OpenJPA
相关文档:http://www.enkj.com/help/newscontent/19490
本文对比了Java EE5中引入的Java Persistence API(JPA)与EJB2.0 CMP之间的区别,解释了JPA如何作为EJB3的子集,并在Java EE6中获得独立规范。讨论了不同应用服务器默认的持久性提供者,如GlassFish、JBoss、WebLogic和WebSphere等。
175

被折叠的 条评论
为什么被折叠?



