Enterprise Beans The
EJB 3.0 specification (itself part of the Java EE 5 platform) included a definition of the Java Persistence API. However, developers do not need an EJB container or a Java EE application server to run applications that use this persistence API. Future versions of the Java Persistence API will be defined in a separate
JSR and specification rather than in the EJB JSR/specification. The Java Persistence API replaces the persistence solution of EJB 2.0 CMP (Container-Managed Persistence).
Java Data Objects API The Java Persistence API was developed in part to unify the Java Data Objects API and the EJB 2.0 Container Managed Persistence (CMP) API. Most products supporting each of the two APIs support the Java Persistence API. The Java Persistence API specifies persistence only for
relational database management systems by focusing on
object-relational mapping (ORM). Some JPA providers support other
database models, though this is outside the scope of JPA's design. The introduction section of the JPA specification states: "The technical objective of this work is to provide an object/relational mapping facility for the Java application developer using a Java domain model to manage a relational database." The
Java Data Objects specification supports ORM as well as persistence to other types of database models, for example,
flat file databases and
NoSQL databases, including
document databases,
graph databases any many other datastores.
Hibernate Hibernate, founded by Gavin King, provides an
open source object-relational mapping framework for
Java. Versions 3.2 and later provide an implementation for the Java Persistence API. King represented
JBoss on JSR 220, the
JCP expert group charged with developing JPA. This led to ongoing controversy and speculation surrounding the relationship between JPA and Hibernate.
Sun Microsystems stated that ideas came from several frameworks, including Hibernate and
Java Data Objects.
Spring Data JPA The Spring Data JPA is an implementation of the repository abstraction that is a key building block of
domain-driven design based on the Java application framework
Spring. It transparently supports all available JPA implementations and supports
CRUD operations as well as the convenient execution of database queries. ==Version history==