Java Persistence API
Java Persistence API (skrót JPA) jest oficjalnym standardem 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.
Trwają prace nad kolejną wersją standardu 2.0 w ramach JSR 317.
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ą annotacji lub/i dokumentów XML. Poza standardowym zestawem operacji udostępnianych przez obiekt EnityManager 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 | BEA |
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 urchomieniowe zwane serwerem aplikacyjnym. Istnieje jednak możliwość korzystania z tego standardu w aplikacjach nie korzystających z serwera aplikacyjnego. Zapewnia ja, między innymi, implementacja JPA dostarczana w ramach projektu Hibernate.