JPA (Java persistence API)

Die Java Persistence API (JPA) des Java Community Process ist ein Standard für das Objekt-relationale Mapping (ORM) von Java-Objekten. ORM ist ein Verfahren zur Speicherung von Objekten in Datenbanken - Klassen und Objekte werden auf Tabellen und Zeilen abgebildet. JPA integriert sich sowohl in Java EE Anwendungen mit Enterprise JavaBeans 3.0 (EJB3) als auch in beliebige Java SE Anwendungen sowie in Applikationen, die auf Basis des Frameworks Spring entwickelt werden. Dadurch wird portables Implementieren von persistenten Objekten mit standardisierten Schnittstellen ermöglicht.

Das Open Source Projekt Hibernate fand bereits vor der Verabschiedung von JPA weite Verbreitung und hat sich einen Namen gemacht als sehr gutes Framework für Object Relational Mapping (ORM). Es unterstützt die JPA-Spezifikation vollständig und erweitert sie zusätzlich um sinnvolle, noch nicht standardisierte Features. Auch bereits vorhandene Datenbankschemata, die nicht geändert werden können oder sollen, lassen sich mittels JPA für moderne Java-Anwendungen nutzbar machen. Neben Hibernate sind u.a. EclipseLink sowie Apache AopenJPA weitere bekannte Implementierungen.

Mit der JPA ist es möglich, sowohl in Java-SE als auch Java-EE mit denselben Mechanismen für die Persistenz von Klassen und Objekten zu arbeiten. Die JPA ist Bestandteil der Java Specification Request Number 220 (JSR-220) und damit offizieller Standard für Object Relational Mapping (ORM) in Java. Dabei muss die Java Persistenz API nicht zwingend in einem Applikations-Server verwendet werden.

Technologie-Stack 
   der JPA

Technologie-Stack der JPA

Die Abbildung zeigt die Architektur der Technologien im Zusammenhang mit der JPA. Auf der logischen Ebene sind Java-Annotationen zentrale Elemente der JPA, da mit diesen das Mapping und das Verhalten der persistenten Klassen gesteuert werden. Ursprünglich war für die Persistenzabbildung der EJB-Container verantwortlich. Mit Einführung der o.g. Spezifikation hat sich das insoweit geändert, dass diese jetzt über die JPA - speziell die Persistence-Provider-Implementierung dieser API - als separater Dienst realisiert wird.

Das zentrale Konzept der Java Persistence API

Ein zentrales Konzept der JPA ist der EntityManager, der zunächst Ähnlichkeiten zu den von Hibernate her bekannten Sessions aufweist, da auch dieser Methoden zum Laden, Suchen, Speichern und Löschen von Objekten bietet. Jedoch sind im Gegensatz zu den Sessions bei Hibernate die Methoden des EntityManagers jedoch unterschiedlich benannt und sind auch hinsichtlich ihres Verhaltens anders.

Elemente von JPA

Elemente von JPA

Die Abbildung zeigt die für den Entwickler zentralen Elemente der JPA. Das Package javax.persistence ist dabei maßgeblich für den Entwickler, das Package javax.persistence.spi definiert die Interfaces für das Management der persistenten Klassen - ist aber aus Entwicklersicht nicht weiter interessant. Eine wichtige Klasse ist Persistence, die als Bootstrap-Klasse agiert. Dabei erzeugt sie eine EntityManagerFactory und in diesem Zug interne Instanzen der Interfaces für das Management. Zudem wird ein neuer Class Loader in der Java Virtual Machine (JVM) installiert. Dieser neue Class Loader ruft für die Entity-Klassen sowie alle anderen Klassen, die mit Entities arbeiten, den sogenannten Transformer auf, bevor diese Klassen in der JVM aktiv werden. Mit dem Transformer wird den geladenen Klassen zusätzliche Funktionalität für das Management der Persistenz hinzugefügt.

Informationen zum Artikel
Deutsch:
Englisch: Java persistence API - JPA
Veröffentlicht: 04.04.2020
Wörter: 510
Tags: Java
Links: active, Apache, API (application programming interface), Architektur, Datenbank