Java Persistence API (skrót JPA) – oficjalny standard mapowania obiektowo-relacyjnego (ORM) firmy Sun Microsystems dla języka programowania Java.
Powstanie standardu
Standard JPA jest elementem standardu EJB 3.0 zdefiniowanym w JSR 220. Enterprise JavaBeans 3.0 został utworzony by zastąpić wersję poprzednią EJB 2.1, w której był inny model persystencji - CMP. Końcowa wersja standardu EJB 3.0 została wydana w maju 2006 roku.
W skład grupy ekspertów zajmujących się tworzeniem JPA wszedł twórca Hibernate: Gavin King. Oficjalny FAQ na stronach Sun podaje, iż na postać standardu miał wpływ nie tylko Hibernate, ale także JDO i TopLink.
Najnowszą wersję standardu 2.1 ukończono w ramach JSR 338
Opis technologii
JavaPersistence API jest standardem ORM dla języka Java. Z punktu widzenia programisty jest to możliwość operowania na obiektach - zwanych encjami - oraz zapisywania wyników operacji do relacyjnej bazy danych za pomocą obiektu EntityManager. Sposób w jaki obiekty i ich połączenia przekładają się na elementy bazy danych są definiowane za pomocą adnotacji lub dokumentów XML. Poza standardowym zestawem operacji udostępnianych przez obiekt EntityManager standard JPA definiuje język zapytań JPA Query Language podobny do SQL.
Implementacje w serwerach aplikacyjnych
Poza wzorcową implementacją standardu JPA - czyli serwera aplikacyjnego GlassFish, istnieje wiele innych implementacji wspomnianego standardu. Serwery aplikacyjne dostarczające usług ORM zgodnie ze standardem Java Persistence API:
Silnik implementujący JPA | Serwer aplikacyjny | Producent serwera |
---|---|---|
Hibernate EntityManager | JBoss AS | Red Hat |
TopLink | Oracle Application Server/OC4J | Oracle Corporation |
Kodo | WebLogic Server | Oracle Corporation |
Open JPA | Apache Geronimo, Open EJB | Apache Software Foundation |
Warto podkreślić, iż niektóre serwery aplikacyjne udostępniają możliwość zamiany dostawcy usług ORM zgodnie ze standardem JPA.
Zależności między JPA, EJB 3.0 oraz Java EE 5
JPA jest elementem standardu EJB 3.0 a ten z kolei wchodzi w skład Java EE 5. Usługi standardu EJB są zwykle realizowane przez specjalne środowisko uruchomieniowe zwane serwerem aplikacyjnym. Istnieje jednak możliwość korzystania z tego standardu w aplikacjach nie korzystających z serwera aplikacyjnego. Zapewnia ją, między innymi, implementacja JPA dostarczana w ramach projektu Hibernate.