JPA-Architektur (Java Persistence API)

Die Datenpersistenz bezeichnet die Fähigkeit, Daten zwischen den Ausführungen einer Anwendung beizubehalten. Die Persistenz ist für Unternehmensanwendungen aufgrund des erforderlichen Zugriffs auf relationale Datenbanken von essenzieller Bedeutung. Anwendungen, die für diese Umgebung entwickelt wurden, müssen die Persistenz selbst steuern oder Lösungen anderer Anbieter verwenden, um Datenbankaktualisierungen und Datenbankabrufe mit Persistenz auszuführen. JPA (Java™ Persistence API) stellt einen Mechanismus für die Verwaltung von Persistenz und objektbezogener Zuordnung und Funktionen für die EJB-Spezifikationen bereit.

Die Spezifikation JPA definiert die objektbezogene Zuordnung intern und setzt keine herstellerspezifischen Implementierungen voraus. JPA basiert auf dem Java-Programmiermodell, das für Java EE-Umgebungen gilt, aber JPA kann für das Testen von Anwendungsfunktionen auch in einer Java SE-Umgebung eingesetzt werden.

JPA stellt eine Vereinfachung des Persistenzprogrammiermodells dar. Die Spezifikation JPA definiert die objektbezogene Zuordnung explizit und setzt keine herstellerspezifischen Zuordnungsimplementierungen voraus. JPA standardisiert die wichtige Aufgabe der objektbezogenen Zuordnung durch Verwendung von Annotationen oder XML, um Objekte in einer oder mehreren Tabellen einer Datenbank zuzuordnen. Zur weiteren Vereinfachung des Persistenzprogrammiermodells stellt JPA Folgendes bereit:
  • Die API "EntityManager" kann Objekte aus einer Datenbank persistent speichern, aktualisieren oder entfernen.
  • Die API "EntityManager" und die Metadaten für die objektbezogene Zuordnung können die meisten Datenbankoperationen abwickeln, ohne dass Sie dazu JDBC- oder SQL-Code schreiben müssten, um die Persistenz aufrechtzuerhalten.
  • JPA stellt eine Abfragesprache bereit, die die unabhängige EJB-Abfragesprache (auch als JPQL bekannt) erweitert. Mit ihr können Objekte abgerufen werden, ohne dass SQL-Abfragen speziell für die Datenbank, mit der Sie arbeiten, geschrieben werden müssen.

JPA kann sowohl innerhalb als auch außerhalb eines Java EE-Containers (Java Enterprise Edition) eingesetzt werden. Wenn Sie JPA innerhalb eines Containers ausführen, können die Anwendungen den Container zur Verwaltung des Persistenzkontextes verwenden. Falls kein Container für die JPA-Verwaltung existiert, muss die Anwendung die Verwaltung des Persistenzkontextes selbst ausführen. Anwendungen, die für die containergesteuerte Persistenz vorgesehen sind, benötigen weniger Codeimplementierungen zur Persistenzverwaltung, aber sie können nicht außerhalb eines Containers verwendet werden. Anwendungen, die ihre eigene Persistenz verwalten, können in einer Containerumgebung oder in einer Java SE-Umgebung ausgeführt werden.

Java EE-Container, die das EJB-3.x-Programmiermodell unterstützen, müssen auch eine JPA-Implementierung unterstützen, die auch als Persistenzprovider bezeichnet wird. Ein JPA-Persistenzprovider verwendet folgende Elemente, um eine einfachere Persistenzverwaltung in einer EJB-3.x-Umgebung zu ermöglichen:
Persistenzeinheit
Besteht aus den deklarativen Metadaten, die die Beziehung von Entitätsklassenobjekten zu einer relationalen Datenbank beschreiben. Die "EntityManagerFactory" verwendet diese Daten, um einen Persistenzkontext zu erstellen, der über den "EntityManager" zugänglich ist.
EntityManagerFactory
Wird verwendet, um einen "EntityManager" für Datenbankinteraktionen zu erstellen. Diese Funktion wird normalerweise von den Anwendungsservercontainern bereitgestellt. Wenn Sie jedoch die anwendungsverwaltete JPA-Persistenz verwenden, ist die EntityManagerFactory erforderlich. Eine Instanz einer "EntityManagerFactory" stellt einen Persistenzkontext dar.
Persistenzkontext
Definiert die Gruppe aktiver Instanzen, die die Anwendung derzeit bearbeitet. Der Persistenzkontext kann manuell oder über Injektion erstellt werden.
EntityManager
Der Ressourcenmanager, der die aktive Sammlung der Entitätsobjekte verwaltet, die von der Anwendung verwendet werden. Der "EntityManager" steuert die Datenbankinteraktion und die Metadaten für objektbezogene Zuordnungen. Eine Instanz eines "EntityManager" stellt einen Persistenzkontext dar. Eine Anwendung in einem Container kann den "EntityManager" durch Injektion in die Anwendung oder durch eine Suchoperation im Namespace der Java-Komponente erhalten. Wenn die Anwendung ihre Persistenz verwaltet, erhält sie den "EntityManager" aus der "EntityManagerFactory".
Achtung: Die Injektion des "EntityManager" wird nur für folgende Artefakte unterstützt:
  • EJB-3.x-Session-Beans
  • EJB-3.x-MDBs
  • Servlets, Servletfilter und Listener
  • JSP-Tag-Handler, die die Schnittstellen "javax.servlet. jsp.tagext.Tag" und "javax.servlet.jsp.tagext.SimpleTag" implementieren
  • JSF-verwaltete Beans (JavaServer Faces)
  • die Hauptklasse des Anwendungsclients
Entitätsobjekte
Eine einfache Java-Klasse, die eine Zeile in einer Datenbanktabelle in ihrer einfachsten Form darstellt. Entitätsobjekte können konkrete Klassen oder abstrakte Klassen sein. Sie verwalten Statusinformationen über Eigenschaften oder Felder.

Symbol, das den Typ des Artikels anzeigt. Konzeptartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cejb_persistence
Dateiname:cejb_persistence.html