Java Persistence API


Java Persistence API

Die Java Persistence API (auch JPA) ist eine Schnittstelle für Java-Anwendungen, die die Zuordnung und die Übertragung von Objekten zu Datenbankeinträgen vereinfacht. Sie vereinfacht die Lösung des Problems der objekt-relationalen Abbildung, das darin besteht, Laufzeit-Objekte einer Java-Anwendung über eine einzelne Sitzung hinaus zu speichern (Persistenz), wobei relationale Datenbanken eingesetzt werden können, die ursprünglich nicht für objektorientierte Datenstrukturen vorgesehen sind.

Die Java Persistence API wurde als Projekt der JSR 220 Expert Group entwickelt und im Mai 2006 erstmals veröffentlicht.

EclipseLink ist die Referenzimplementierung für die Java Persistence API (JPA) 2.0.[1]. TopLink Essentials war die Referenzimplementierung für JPA 1.0.

Inhaltsverzeichnis

Konzeption

Neben der API, welche im Package javax.persistence definiert ist, besteht die Java Persistence aus folgenden Komponenten:

Persistence Entity

Eine Persistence Entity ist ein Plain Old Java Object (POJO), das üblicherweise auf eine einzelne Tabelle in der relationalen Datenbank abgebildet wird. Instanzen dieser Klasse entsprechen hierbei den Zeilen der Tabelle. Persistence Entities können je nach Designvorgabe als einfache Datenhaltungs-Klassen (vergleichbar mit einem Struct in C) realisiert werden oder als Business-Objekte inklusive Business-Logik.

Objektrelationale Metadaten

Die Beziehungen zwischen den einzelnen Tabellen werden über objektrelationale Metadaten ausgedrückt. Diese sind entweder als Java-Annotationen angelegt, oder in einer separaten XML-Datei abgelegt.

Die Java Persistence Query Language

Die Java Persistence Query Language (JPQL) wird genutzt, um Abfragen bezüglich der in der Datenbank gespeicherten Entitäten durchzuführen. Diese Abfragen ähneln syntaktisch SQL-Abfragen, beziehen sich aber auf Entitäten statt auf Datenbanktabellen.

Die JPA-Implementierungen überführen die in JPQL formulierten Abfragen zur Laufzeit in ein SQL-Statement, das vom Zieldatenbanksystem verstanden wird. Durch diese Abstraktion kann das Datenbanksystem transparent ausgetauscht werden, während die Java Klassen vollständig erhalten bleiben. Im Unterschied dazu erlaubt die JPA auch die Verwendung von "normalen" SQL-Abfragen, wobei diese als Native Query bezeichnet werden. Beim Einsatz von Native Queries muss jedoch der Anwender selbst darauf achten, dass die Abfrage vom Zielsystem verstanden wird.

Java Persistence im Kontext

Viele Javaentwickler benutzten bereits vor dem Aufkommen der Java Persistence API Open-Source Persistenzframeworks. Dies geschah meist mit der Begründung, dass die manuelle Implementierung der Persistenz zu aufwändig und fehleranfällig sei[2], aber die dafür in JEE vorgesehenen Entity Beans durch ihren hohen Ressourcenverbrauch, ihre Komplexität, sowie die Notwendigkeit, auf einem Java-EE-Anwendungsserver zu laufen, zu aufwändig sind. Die Möglichkeiten der vor der Java Persistence API von SUN propagierten Java Data Objects reichten hingegen den wenigsten Entwicklern.

Bei der Entwicklung der Java Persistence API flossen viele Eigenschaften der bereits etablierten Open-Source Persistenzframeworks wie Hibernate und Toplink ein. Diese Frameworks bieten nun teilweise auch Implementierungen der Java Persistence API an.

Java Persistence wurde als Teil der Spezifikation Enterprise JavaBeans 3.0 definiert und stellt somit einen Nachfolger der Entity Beans dar. Obwohl die EJB-3.0-Spezifikation ein Teil der Java-EE-5-Plattform ist, wird für die Verwendung kein EJB-Container oder ein entsprechender Java-EE-Anwendungsserver benötigt. Künftige Versionen sollen daher als separater Java Community Process außerhalb der EJB-Spezifikation definiert werden.

Die Java Persistence API wurde für die relationale Persistenz relativ einfacher Objekte entwickelt. Für Objektdatenbanken muss weiterhin auf Java Data Objects oder ähnliche Frameworks ausgewichen werden. Die Service Data Object (SDO) API hingegen dient hauptsächlich der Abbildung komplexer Daten auf verschiedene Formate und Programmiersprachen für die Verwendung in Serviceorientierten Architekturen.

Allerdings unterstützt die Java Persistence API alle drei Arten der objektrelationalen Abbildung von Vererbungsbeziehungen (Tabelle pro Vererbungshierarchie, Tabelle pro Unterklasse und Tabelle pro konkrete Klasse).[3]

Einzelnachweise

  1. Eclipse Announces EclipseLink Project to Deliver JPA 2.0 Reference Implementation. Eclipse Foundation (17. März 2008). Abgerufen am 27. Juli 2008.
  2. http://docs.jboss.org/hibernate/core/3.6/quickstart/en-US/html_single/#hibernate-gsg-preface
  3. Java Feature — Inheritance Hierarchies in JPA

Weblinks

Wikibooks Wikibooks: Java Persistence (englisch) – Lern- und Lehrmaterialien

Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Java Persistence API — (JPA)  API, входящий с версии Java 5 в состав платформ Java SE и Java EE, предоставляет возможность сохранять в удобном виде Java объекты в базе данных[1]. Существует несколько реализаций этого интерфейса, одна из самых популярных использует …   Википедия

  • Java Persistence API — Desarrollador Sun Microsystems http://java.sun.com/javaee/... Información general Género …   Wikipedia Español

  • Java Persistence API — The Java Persistence API, sometimes referred to as JPA, is a Java programming language framework that allows developers to manage relational data in Java Platform, Standard Edition and Java Platform, Enterprise Edition applications.The Java… …   Wikipedia

  • Java Persistence API — La Java Persistence API (abrégée en JPA), est une interface de programmation Java permettant aux développeurs d organiser des données relationnelles dans des applications utilisant la plateforme Java. La Java Persistence API est à l origine issue …   Wikipédia en Français

  • Java Persistance API — Java Persistence API L’API de persistance Java des données, Java Persistence API abrégé en JPA, fait partie de la spécification EJB 3. Spécification EJB3 qui fait elle même partie de la plate forme JEE 5.0. La persistance des données en EJB3 est… …   Wikipédia en Français

  • Java Persistence Query Language — Испытал влияние: SQL Java Persistence Query Language (JPQL)  платформо независимый объектно ориентированный язык запросов являющийся частью Java Persistence API спецификации. JPQL используется для написания запросов к сущностям, хранящимся в …   Википедия

  • Java Platform, Enterprise Edition — or Java EE is a widely used platform for server programming in the Java programming language. The Java EE Platform differs from the Standard Edition (SE) of Java in that it adds libraries which provide functionality to deploy fault tolerant,… …   Wikipedia

  • Java Data Objects — (JDO) is a specification of Java object persistence. One of its features is a transparency of the persistent services to the domain model. JDO persistent objects are ordinary Java programming language classes; there s no requirement for them to… …   Wikipedia

  • Java EE — Java Platform, Enterprise Edition o Java EE (anteriormente conocido como Java 2 Platform, Enterprise Edition o J2EE hasta la versión 1.4), es una plataforma de programación parte de la Plataforma Java para desarrollar y ejecutar software de… …   Wikipedia Español

  • Java 2 Enterprise Edition — Java Platform, Enterprise Edition, abgekürzt Java EE oder früher J2EE, ist die Spezifikation einer Softwarearchitektur für die transaktionsbasierte Ausführung von in Java programmierten Anwendungen und insbesondere Web Anwendungen. Sie ist eine… …   Deutsch Wikipedia