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: app
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. ide
EJB 3 is a wider specification and implementations are provided by the EJB container of application servers that rely on persistence providers: spa