<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Jakarta_Persistence_API</id>
	<title>Jakarta Persistence API - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Jakarta_Persistence_API"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Jakarta_Persistence_API&amp;action=history"/>
	<updated>2026-05-21T16:25:44Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Jakarta_Persistence_API&amp;diff=1121586&amp;oldid=prev</id>
		<title>imported&gt;JollyTech: /* growthexperiments-addlink-summary-summary:1|0|0 */</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Jakarta_Persistence_API&amp;diff=1121586&amp;oldid=prev"/>
		<updated>2025-07-03T20:29:29Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;growthexperiments-addlink-summary-summary:1|0|0&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Die &amp;#039;&amp;#039;&amp;#039;Jakarta Persistence API&amp;#039;&amp;#039;&amp;#039; (JPA; früher Java Persistence API) ist eine [[Programmierschnittstelle|Schnittstelle]] für [[Java (Programmiersprache)|Java]]-Anwendungen, die die Zuordnung und die Übertragung von [[Objekt (Programmierung)|Objekten]] zu Datenbankeinträgen vereinfacht. Sie vereinfacht die Lösung des Problems der [[Objektrelationale Abbildung|objektrelationalen Abbildung]], das darin besteht, Laufzeit-Objekte einer Java-Anwendung über eine einzelne Sitzung hinaus zu speichern ([[Persistenz (Informatik)|Persistenz]]), wobei [[relationale Datenbank]]en eingesetzt werden können, die ursprünglich nicht für objektorientierte Datenstrukturen vorgesehen sind.&lt;br /&gt;
&lt;br /&gt;
Die Jakarta Persistence API wurde als Projekt der [[Java Community Process|JSR]] 220 Expert Group entwickelt und im Mai 2006 erstmals veröffentlicht. Die Spezifikation der aktuellen Version 3.0 wurde am 26.&amp;amp;nbsp;Oktober 2020 freigegeben.&amp;lt;ref&amp;gt;{{Internetquelle |autor=Lukas Jungmann |url=https://github.com/eclipse-ee4j/jpa-api/releases/tag/3.0-3.0.0-RELEASE |titel=Jakarta Persistence 3.0.0 API |werk=GitHub |datum=2020-10-26 |sprache=en |abruf=2021-05-05}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[EclipseLink]] ist die [[Referenzimplementierung]] seit der Version 2.0.&amp;lt;ref&amp;gt;{{Internetquelle |url=https://www.eclipse.org/org/press-release/20080317_Eclipselink.php |titel=Eclipse Announces EclipseLink Project to Deliver JPA 2.0 Reference Implementation |hrsg=Eclipse Foundation |datum=2008-03-17 |sprache=en |abruf=2008-07-27}}&amp;lt;/ref&amp;gt; [[TopLink|TopLink Essentials]] war die Referenzimplementierung für JPA 1.0.&lt;br /&gt;
&lt;br /&gt;
== Konzeption ==&lt;br /&gt;
Neben der API, welche im Package &amp;#039;&amp;#039;javax.persistence&amp;#039;&amp;#039; definiert ist, besteht die Jakarta Persistence aus folgenden Komponenten:&lt;br /&gt;
&lt;br /&gt;
=== Persistence Entity ===&lt;br /&gt;
Eine &amp;#039;&amp;#039;Persistence Entity&amp;#039;&amp;#039; ist ein [[Plain Old Java Object|Plain Old Java Object (POJO)]], das üblicherweise auf eine einzelne Tabelle in der relationalen Datenbank abgebildet wird. Instanzen dieser [[Klasse (Objektorientierung)|Klasse]] entsprechen hierbei den Zeilen der Tabelle. Persistence Entities können je nach Designvorgabe als einfache Datenhaltungs-Klassen (vergleichbar mit einem [[Struct]] in [[C (Programmiersprache)|C]]) realisiert werden oder als Business-Objekte inklusive Business-Logik.&lt;br /&gt;
&lt;br /&gt;
=== Objektrelationale Metadaten ===&lt;br /&gt;
Die Beziehungen zwischen den einzelnen Tabellen werden über objektrelationale Metadaten ausgedrückt. Diese sind entweder als [[Annotation (Java)|Java-Annotationen]] angelegt und/oder in einer separaten [[XML]]-Datei abgelegt.&lt;br /&gt;
&lt;br /&gt;
=== {{Anker|JPQL}} Die Jakarta Persistence Query Language ===&lt;br /&gt;
Die Jakarta Persistence Query Language (&amp;#039;&amp;#039;JPQL&amp;#039;&amp;#039;) ist eine Erweiterung der [[EJB QL|Enterprise Java Beans Query Language]] (EJB&amp;amp;nbsp;QL) und wird genutzt, um Abfragen bezüglich der in der Datenbank gespeicherten Entitäten durchzuführen.&amp;lt;ref&amp;gt;{{Internetquelle |url=https://www.ibm.com/docs/en/wasdtfe?topic=architecture-jpa-query-language |titel=JPA query language |werk=ibm.com |datum=2024-02-26 |sprache=en |abruf=2024-08-10}}&amp;lt;/ref&amp;gt; Diese Abfragen ähneln syntaktisch [[SQL]]-Abfragen, beziehen sich aber auf Entitäten statt auf [[Datenbanktabelle]]n.&lt;br /&gt;
&lt;br /&gt;
Die JPA-Implementierungen überführen die in JPQL formulierten Abfragen zur [[Laufzeit (Informatik)|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 &amp;#039;&amp;#039;Native Query&amp;#039;&amp;#039; bezeichnet werden. Beim Einsatz von &amp;#039;&amp;#039;Native Queries&amp;#039;&amp;#039; muss jedoch der Anwender selbst darauf achten, dass die Abfrage vom Zielsystem verstanden wird.&lt;br /&gt;
&lt;br /&gt;
== Jakarta Persistence im Kontext ==&lt;br /&gt;
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 auf Grund des [[Object-relational impedance mismatch]]es zu aufwendig und fehleranfällig sei.&amp;lt;ref&amp;gt;{{Internetquelle |autor=Gavin King, Christian Bauer, Emmanuel Bernard, Steve Ebersole |url=http://docs.jboss.org/hibernate/core/3.6/quickstart/en-US/html_single/#hibernate-gsg-preface |titel=Hibernate Getting Started Guide |sprache=en |abruf=2013-02-10 |zitat=Working with both Object-Oriented software and Relational Databases can be cumbersome and time consuming. Development costs are significantly higher due to a paradigm mismatch between how data is represented in objects versus relational databases.}}&amp;lt;/ref&amp;gt; Die dafür in der [[Java Platform, Enterprise Edition]] bis 1.4 vorgesehenen [[Entity Bean]]s seien durch ihren hohen Ressourcenverbrauch, ihre Komplexität, sowie die Notwendigkeit, auf einem Java-EE-Anwendungsserver zu laufen, aber zu aufwendig. Die Möglichkeiten der vor der Jakarta Persistence API von [[Sun Microsystems|Sun]] propagierten [[Java Data Objects]] reichten hingegen den wenigsten Entwicklern.&lt;br /&gt;
&lt;br /&gt;
Bei der Entwicklung der Java Persistence API flossen viele Eigenschaften der bereits etablierten Open-Source Persistenzframeworks wie [[Hibernate (Framework)|Hibernate]] und [[TopLink|Toplink]] ein. Diese Frameworks bieten nun teilweise auch Implementierungen der Jakarta Persistence API an.&lt;br /&gt;
&lt;br /&gt;
Jakarta 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.&lt;br /&gt;
&lt;br /&gt;
Die Jakarta Persistence API wurde für die relationale Persistenz relativ einfacher Objekte entwickelt. Für [[Objektdatenbank]]en muss weiterhin auf Java Data Objects oder ähnliche Frameworks ausgewichen werden. Die [[Service Data Objects|Service Data Object]] (SDO) API hingegen dient hauptsächlich der Abbildung komplexer Daten auf verschiedene Formate und Programmiersprachen für die Verwendung in [[Serviceorientierte Architektur|Serviceorientierten Architekturen]].&lt;br /&gt;
&lt;br /&gt;
Allerdings unterstützt die Jakarta Persistence API alle drei Arten der [[Objektrelationale Abbildung#Abbildung von Vererbungshierarchien|objektrelationalen Abbildung von Vererbungsbeziehungen]] (&amp;#039;&amp;#039;Tabelle pro Vererbungshierarchie&amp;#039;&amp;#039;, &amp;#039;&amp;#039;Tabelle pro Unterklasse&amp;#039;&amp;#039; und &amp;#039;&amp;#039;Tabelle pro konkrete Klasse&amp;#039;&amp;#039;).&amp;lt;ref&amp;gt;{{Internetquelle |autor=Raghu R. Kodali, Jonathan Wetherbee |url=http://java.sys-con.com/node/286901 |titel=Java Feature — Inheritance Hierarchies in JPA |werk=java.sys-con.com |datum=2006-10-23 |sprache=en |archiv-url=https://web.archive.org/web/20120315122614/http://java.sys-con.com/node/286901 |archiv-datum=2012-03-15 |abruf=2010-05-19}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementierungen ==&lt;br /&gt;
Die JPA-2.2-Spezifikation wird von einer Reihe an Persistenzframeworks unterstützt, unter anderem von [[Apache OpenJPA]], [[Hibernate (Framework)|Hibernate]] und [[EclipseLink]].&lt;br /&gt;
&lt;br /&gt;
== Namensgebung ==&lt;br /&gt;
Die Umbenennung ist auf die Übertragung des Projektes von [[Oracle]] an die [[Eclipse Foundation]] in 2018 zurückzuführen.&amp;lt;ref&amp;gt;{{Internetquelle |autor=David Delabassee |url=https://delabassee.com/Road-to-Jakarta/ |titel=The road to Jakarta EE |werk=David Delabassée – DevRel Java Platform Group @ Oracle&amp;lt;br/&amp;gt;Accessibility Activist |datum=2018-04-23 |sprache=en |abruf=2023-09-04}}&amp;lt;/ref&amp;gt; Dieser Schritt wird durch die Eclipse Foundation primär mit der Vermeidung rechtlicher Komplikationen begründet.&amp;lt;ref&amp;gt;{{Internetquelle |autor=David Blevins |url=https://www.tomitribe.com/blog/java-ee-to-jakarta-ee/ |titel=Java EE to Jakarta EE |werk=Tomitribe |datum=2018-02-08 |sprache=en-US |abruf=2022-01-14}}&amp;lt;/ref&amp;gt; Öffentliche Vorschläge für Namenskandidaten wurden über den Dienst [[GitHub]] öffentlich entgegengenommen, wobei die ultimative Entscheidung dem Direktor der Eclipse Management Organisation [[Mike Milinkovich]] oblag.&amp;lt;ref&amp;gt;{{Internetquelle |autor=Wayne Beaton |url=https://github.com/eclipse-ee4j/ee4j/issues/1#issue-274214629 |titel=Brand Name Selection |werk=GitHub |datum=2017-09-15 |sprache=en |abruf=2022-01-14}}&amp;lt;/ref&amp;gt; Die erste Erwähnung des Terminus &amp;#039;&amp;#039;Jakarta&amp;#039;&amp;#039; im Kontext der Umbenennung ist auf den Nutzer Kenneth J. Jaeger zurückzuführen.&amp;lt;ref&amp;gt;{{Internetquelle |autor=Kenneth J. Jaeger |url=https://github.com/eclipse-ee4j/ee4j/issues/1#issuecomment-344671215 |titel=How about Jakarta Enterprise Edition? |werk=GitHub |datum=2017-09-15 |sprache=en |abruf=2022-01-14}}&amp;lt;/ref&amp;gt; Zu dem Zeitpunkt des Vorschlages durch &amp;#039;&amp;#039;Jaeger&amp;#039;&amp;#039; war die [[Service Mark|Marke]] &amp;#039;&amp;#039;Jakarta&amp;#039;&amp;#039; Eigentum der [[Apache Software Foundation]], welche jedoch einwilligte, die Rechte an die Eclipse Foundation zu übertragen.&amp;lt;ref&amp;gt;{{Internetquelle |autor=B. Liyanage Asanka |url=https://medium.com/@bliyanageasanka/java-ee-renamed-to-jakarta-ee-66bd1309fed9 |titel=Java EE renamed to Jakarta EE |werk=Medium |datum=2018-03-16 |sprache=en |abruf=2022-01-14}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* {{Literatur&lt;br /&gt;
   |Autor=Bernd Müller, Harald Wehr&lt;br /&gt;
   |Titel=Java Persistence API 2. Hibernate, EclipseLink, OpenJPA und Erweiterungen&lt;br /&gt;
   |Verlag=Carl Hanser Verlag&lt;br /&gt;
   |Datum=2012&lt;br /&gt;
   |ISBN=978-3-446-42693-1}}&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
{{Wikibooks|Java Persistence|Java Persistence|lang=en}}&lt;br /&gt;
* [http://www.oracle.com/technetwork/java/javaee/tech/persistence-jsp-140049.html JPA.] [[Oracle]] (englisch)&lt;br /&gt;
* [http://jcp.org/aboutJava/communityprocess/final/jsr220/index.html Endgültige Version der EJB3 Spezifikation]&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Normdaten|TYP=s|GND=7702016-9}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Java-Programmierschnittstelle]]&lt;/div&gt;</summary>
		<author><name>imported&gt;JollyTech</name></author>
	</entry>
</feed>