Java Persistence API
A Java Persistence API, vagy röviden JPA, egy keretrendszer a Java programozási nyelvhez, fő feladata Java Platformot (Standard Edition, Enterprise Edition) használó alkalmazásokban relációs adatok kezelése. A Java Persistence API a JSR 220 Expert Group, a JPA 2.0 a JSR 317 Expert Group munkája.
A perzisztencia ebben a kontextusban a következő három területet fedi le:
- maga az API, a javax.persistence csomagban definiálva
- a Java Persistence Query Language (JPQL)
- objektum-relációs metaadatok
Története
A JPA 1.0 specifikáció 2006. május 11-én jelent meg végleges formában a JSR 220 részeként. A JPA 2.0 specifikáció 2009 december 10-én jelent meg. A JPA a sokat kritizált EJB 2.0 és EJB 2.1 entitás bean-ek leváltására született.
Entitások
A perzisztencia entitás egy olyan Java osztály, mely tipikusan perzisztálva van egy táblához egy relációs adatbázisban, példányai adattáblák egyes sorainak felelnek meg. Az entitások általában kapcsolatban állnak más entitásokkal, és ezeket a kapcsolatokat az objektum-relációs metaadatok fejezik ki. Objektum-relációs metaadatokat meghatározhatunk közvetlenül az entitás osztályt tartalmazó fájlban annotációk segítségével, vagy egy – az alkalmazáshoz tartozó, de az entitás osztálytól különálló – XML leíró fájlban.
Java Persistence Query Language
A Java Persistence Query Language (JPQL) segítségével a relációs adatbázisban tárolt entitások kérdezhetők le. A lekérdezések szintaxisa hasonló az SQL lekérdezésekhez, de ezekben a lekérdezésekben entitás objektumokat kezelünk, nem közvetlenül adattáblákat.
Kapcsolódó technológiák
Enterprise JavaBeans
Az EJB 3.0 specifikáció (mely a Java EE 5 platform része) magában foglal egy definíciót a Java Persistence API-ról. Ugyanakkor a végfelhasználóknak nincsen szükségük EJB konténerre vagy Java EE alkalmazás szerverre annak érdekében, hogy olyan alkalmazást futtassanak, mely a JPA-t használja. A Java Persistence API következő verziói különálló JSR-ben lesznek definiálva, nem pedig az EJB JSR-ben.
A Java Persistence API az EJB 2.0 CMP (Container Managed Persistence) perzisztencia megoldását váltja fel.
Java Data Objects API
A Java Persistence API a Java Data Objects API és az EJB 2.0 CMP (Container Managed Persistence ) API egységesítésének részeként lett kifejlesztve. 2009 óta minden termék, ami ezen API-kat támogatja, az támogatja a JPA-t is. A Java Persistence API relációs perzisztenciát határoz meg kizárólag a relációs adatbázis-kezelő rendszerek (RDBMS-ek) számára (bár léteznek szolgáltatók, akik más adatforrásokat is támogatnak). A Java Data Objects specifikációk gondoskodnak a relációs perzisztenciáról (ORM, objektum-relációs leképezés), valamint a más típusú adattárak felé való perzisztenciáról is.
Service Data Object API
Ahogy Java Persistence API fejlődött, leváltotta az EJB 2.0-t, ennek bizonyítéka, hogy az EJB 3.0-nak már része. A Service Data Objects (SDO) API-nak (JSR 235) más a célja, és a Java Persistence API kiegészítőjeként tartják számon. Az SDO API a service orientált architektúrák számára lett tervezve, Java verzióját a Java Community Process kezeli, C++ verzióját az OASIS.
Hibernate
A Hibernate egy nyílt forráskódú objektum-relációs leképező keretrendszert nyújt Java-hoz. A 3.2-es és az ennél későbbi verziók a Java Persistence API-hoz is implementációt adnak. A Hibernate alapjait Gavin King fektette le.
JPA 2.0
A JPA új verziójának, a JPA 2.0 JSR 317-nek fejlesztése 2007 júliusában kezdődött, és a JPA 2.0 végül 2009. december 10-én lett jóváhagyva. A JPA 2.0 fő jellemzői:
- kiterjesztett objektum-relációs leképezés funkcionalitás
- beágyazott objektumokat tartalmazó kollekciók támogatása
- több szinten beágyazott objektumok
- rendezett listák
- hozzáférés típusok kombinálása
- criteria query API
- további metaadatok szabványosítása a DDL generáció támogatására
- validálás támogatása
A JPA 2.0-t támogató cégek:
- DataNucleus (korábban JPOX)
- EclipseLink (korábban Oracle TopLink)
- JBoss Hibernate
- ObjectDB
- OpenJPA
- IBM, az OpenJPA-alapú Feature Pack for OSGi Applications and JPA 2.0 for WebSphere Application Server-en keresztül
- Versant JPA
Külső hivatkozások
- JCP Persistence page
- GlassFish's Persistence page
- Documentation for the final version of the EJB3 spec (called JSR220)