Enterprise BeansEdit
Az EJB 3.0 specifikáció (amely maga is a Java EE 5 platform része) tartalmazta a Java Persistence API definícióját. A végfelhasználóknak azonban nincs szükségük EJB konténerre vagy Java EE alkalmazáskiszolgálóra ahhoz, hogy az ezt a perzisztencia API-t használó alkalmazásokat futtassák. A Java Persistence API jövőbeli verzióit nem az EJB JSR/specifikációban, hanem egy külön JSR-ben és specifikációban határozzák meg.
A Java Persistence API az EJB 2.0 CMP (Container Managed Persistence) perszisztencia megoldását váltja fel.
Java Data Objects APIEdit
A Java Persistence API-t részben a Java Data Objects API és az EJB 2.0 Container Managed Persistence (CMP) API egységesítésére fejlesztették ki. 2009-től az említett API-k mindegyikét támogató termékek többsége támogatja a Java Persistence API-t.
A Java Persistence API csak a relációs adatbázis-kezelő rendszerek számára írja elő a perzisztenciát. Vagyis a JPA az objektum-relációs leképezésre (ORM) összpontosít (megjegyzendő, hogy vannak olyan JPA-szolgáltatók, amelyek a relációs adatbázison kívül más adatbázis-modelleket is támogatnak, de ez kívül esik azon, amire a JPA-t tervezték). A JPA szerepének tisztázásához lásd a JPA 2 spec 1. szakaszának bevezetőjét, amely nagyon világosan kimondja: “A munka technikai célja, hogy objektum/relációs leképezési lehetőséget biztosítson a Java alkalmazásfejlesztő számára, amely egy Java tartománymodellt használ egy relációs adatbázis kezelésére.”
A Java Data Objects specifikáció támogatja az ORM-et, valamint a perzisztenciát más típusú adatbázis-modellekhez, például síkfájl-adatbázisokhoz és NoSQL-adatbázisokhoz, beleértve a dokumentum-adatbázisokat, gráf-adatbázisokat, valamint szó szerint minden más elképzelhető adattárolót.
Service Data Object APIEdit
A Java Persistence API tervezőinek célja a relációs perszisztencia biztosítása volt, számos kulcsfontosságú területet átvettek az objektum-relációs leképező eszközökből, például a Hibernate-ből és a TopLinkből. A Java Persistence API továbbfejlesztette és felváltotta az EJB 2.0-t, amit az EJB 3.0-ba való beépítése is bizonyít. A Service Data Objects (SDO) API (JSR 235) célja jelentősen eltér a Java Persistence API-tól, és kiegészítőnek tekinthető. Az SDO API-t szolgáltatásorientált architektúrákhoz, többféle adatformátumhoz és nem csak relációs adatokhoz, valamint többféle programozási nyelvhez tervezték. A Java Community Process kezeli az SDO API Java verzióját; az SDO API C++ verzióját az OASIS-on keresztül kezelik.
HibernateEdit
A Hibernate egy nyílt forráskódú objektum-relációs leképező keretrendszert biztosít Java számára. A 3.2-es és újabb verziók implementációt biztosítanak a Java Persistence API számára. A Hibernate projektet Gavin King alapította. Ő képviselte a JBoss-t a JSR 220-ban, a JPA fejlesztésével megbízott JCP szakértői csoportban. Ez folyamatos vitákhoz és spekulációkhoz vezetett a JPA és a Hibernate közötti kapcsolat körül. A Sun Microsystems kijelentette, hogy az ötletek több keretrendszerből, köztük a Hibernate-ből és a Java Data Objects-ből származnak.
Spring Data JPAEdit
A tárolóabsztrakció megvalósítása, amely a Domain-Driven Design egyik legfontosabb építőköve, és a Java alkalmazás keretrendszerén, a Spring-en alapul. Átláthatóan támogatja az összes elérhető JPA implementációt, és támogatja a CRUD műveleteket, valamint az adatbázis-lekérdezések kényelmes végrehajtását.