Jakarta Persistenz

Jakarta Persistenz (JPA; ehemals Java Persistenz API) ist a Jakarta ee Programmierschnittstelle Spezifikation, die das Management von beschreibt Relationale Daten in Enterprise Java Anwendungen.

Beharrlichkeit In diesem Zusammenhang deckt drei Bereiche ab:

Das Referenzimplementierung denn JPA ist EclipSelink.[1]

Geschichte

Das endgültige Veröffentlichungsdatum der JPA 1.0 -Spezifikation war der 11. Mai 2006 als Teil von Java Community -Prozess JSR 220. Die JPA 2.0 -Spezifikation wurde am 10. Dezember 2009 veröffentlicht (die Java EE 6 -Plattform erfordert JPA 2.0[2]). Die JPA 2.1 -Spezifikation wurde am 22. April 2013 veröffentlicht (die Java EE 7 -Plattform erfordert JPA 2.1[3]). Die JPA 2.2 -Spezifikation wurde im Sommer 2017 veröffentlicht. Die JPA 3.1 -Spezifikation, die neueste Version, wurde im Frühjahr 2022 als Teil von Jakarta EE 10 veröffentlicht.[1]

Entitäten

Eine Ausdauer Einheit ist ein leichtes Gewicht Java -Klasse mit seinem Staat blieb normalerweise an a Tisch in einem relationale Datenbank. Instanzen einer solchen Entität entsprechen Individuum Reihen in der Tabelle. Entitäten haben normalerweise Beziehungen zu anderen Einheiten, und diese Beziehungen werden durch Objekt-/Relational Mapping (ORM) -Metadaten ausgedrückt. Diese Metadaten können direkt in der Entitätsklassendatei mithilfe verwendet werden Anmerkungen oder in einem separaten Xml Deskriptordatei, die mit der Anwendung verteilt ist.

Beispiel

Eine Beispiel -Entitätsklasse mit ORM -Metadaten, die mit Annotationen deklariert werden (Importanweisungen und Setter/Getters werden zum Einfachheit halber weggelassen).

@Einheit Öffentlichkeit Klasse Person {  @Ausweis  Privatgelände lang Ich würde;  Privatgelände Saite Vorname;  Privatgelände Saite Nachname;  Privatgelände int das Alter; } 

Das @Einheit Annotation erklärt, dass die Klasse eine Einheit darstellt. @Ausweis deklariert das Attribut, das als das fungiert Primärschlüssel der Entität. Zusätzliche Anmerkungen können verwendet werden, um zusätzliche Metadaten zu deklarieren (z. B. Ändern des Standard -Tabellennamens in der @Tisch Annotation) oder um Assoziationen zwischen Unternehmen zu schaffen.

Abfragesprache

Das Jakarta Persistence Query Sprache (JPQL; ehemals Java Persistence Query Language) macht Abfragen gegen Entitäten, die in einer relationalen Datenbank gespeichert sind. Abfragen ähneln Sql Abfragen in der Syntax, aber nicht direkt mit Datenbanktabellen und nicht mit Entitätsobjekten arbeiten.

Motivation

Vor der Einführung von Ejb 3.0 Spezifikation, viele Unternehmen Java -Entwickler verwendeten leichte persistente Objekte, die von beiden Persistenz -Frameworks bereitgestellt wurden (wie z. Überwintern) oder Datenzugriffsobjekte statt zu verwenden Entitätsbohnen. Dies liegt daran, dass Entity Beans in früheren EJB Java EE -Anwendungsserver Aufgrund von Verbindungen und Abhängigkeiten im Quellcode zwischen Beans und DAO -Objekten oder Persistenz -Frameworks. So wurden viele der ursprünglich in Persistenz-Rahmenbedingungen von Drittanbietern vorgestellten Merkmale in die Java Persistenz-API und Projekte wie z. Überwintern und TopLink Essentials sind implementierungen der Java Persistence -API -Spezifikation geworden.

Verwandte Technologien

Enterprise Bohnen

Das EJB 3.0 Die Spezifikation (selbst Teil der Java ee 5 -Plattform) enthielt eine Definition der Java -Persistenz -API. Entwickler benötigen jedoch keinen EJB -Container oder einen Java EE -Anwendungsserver, um Anwendungen auszuführen, die diese Persistenz -API verwenden.[4] Zukünftige Versionen der Java -Persistenz -API werden in einem separaten definiert JSR und Spezifikation und nicht in der EJB JSR/Spezifikation.

Die Java-Persistenz-API ersetzt die Persistenzlösung von EJB 2,0 CMP (Behälter-verwaltete Persistenz).

Java -Datenobjekte API

Die Java -Persistenz -API wurde teilweise entwickelt, um die API von Java Data Objects API und die EJB 2.0 -API Container Managed Persistence (CMP) zu vereinen. Die meisten Produkte, die jede der beiden APIs unterstützen, unterstützen die Java -Persistenz -API.

Die Java -Persistenz -API gibt Persistenz nur für an Relationale Datenbankverwaltungssysteme durch Konzentration auf Objektrelationskartierung (ORM). Einige JPA -Anbieter unterstützen andere Datenbankmodelle, obwohl dies außerhalb des Rahmens von JPAs Design liegt. In dem Einführungsabschnitt der JPA -Spezifikation heißt es: "Das technische Ziel dieser Arbeit besteht darin, dem Java -Anwendungsentwickler ein Java -Domänenmodell zur Verwaltung einer relationalen Datenbank für den Java -Anwendungsentwickler bereitzustellen."[5]

Das Java -Datenobjekte Die Spezifikation unterstützt beispielsweise sowohl ORM als auch Persistenz für andere Arten von Datenbankmodellen. Flat -Datei -Datenbanken und NoSQL Datenbanken, einschließlich Dokumentdatenbanken, Grafikdatenbanken Alle anderen Datenspeicher.

Service -Data -Objekt -API

Die Designer[6] der Java -Persistenz -API zielte darauf ab, eine relationale Persistenz vorzunehmen, wobei viele der Schlüsselbereiche stammen Objektrelationskartierung Werkzeuge wie Überwintern und Toplink. Die Java -Persistenz -API verbesserte sich und ersetzte EJB 2.0, was durch ihre Aufnahme in EJB 3.0 belegt wurde. Die SDO -API (Service Data Objects (SDO) (JSR 235) hat ein ganz anderes Ziel als das der Java Persistence -API und wird berücksichtigt [7][8] komplementär. Die SDO -API ist für Service-orientierte Architekturen, mehrere Datenformate anstelle von relationalen Daten und mehreren Programmiersprachen. Das Java Community -Prozess verwaltet die Java -Version der SDO -API; das C ++ Die Version der SDO -API wird durch verwaltet OASE.

Überwintern

Hibernate, gegründet von Gavin King, bietet eine Open Source Objektrelationskartierung Rahmen für Java. Die Versionen 3.2 und später bieten eine Implementierung für die Java Persistence API.[9][10] König vertreten Jboss auf JSR 220,[11] das JCP Expertengruppe für die Entwicklung von JPA. Dies führte zu kontinuierlichen Kontroversen und Spekulationen über die Beziehung zwischen JPA und Winterschlaf. Sun Microsystems angegeben[12] Diese Ideen kamen aus mehreren Frameworks, einschließlich Hibernate und Java -Datenobjekte.

Federdaten JPA[13]

Die Spring Data JPA ist eine Implementierung der Repository -Abstraktion, die ein wichtiger Baustein von ist Domänengetriebenes Design Basierend auf dem Java -Anwendungsrahmen Frühling. Es unterstützt transparent alle verfügbaren JPA -Implementierungen und Unterstützung Crud Operationen sowie die bequeme Ausführung von Datenbankabfragen.

Versionsgeschichte

JPA 2.0

Die Entwicklung einer neuen Version von JPA 2.0 wurde im Juli 2007 im Java -Community -Prozess als JSR 317 gestartet. JPA 2.0 wurde am 10. Dezember 2009 als endgültig genehmigt ORM -Anbieter konnten jedoch keine Konsensgenehmigung für JPA 1.0 erhalten.

Die Hauptmerkmale waren enthalten:

  • Erweiterte Objektrelationszuordnungsfunktionalität
    • Unterstützung für Sammlungen eingebetteter Objekte, die im Orm mit a verbunden sind Viele zu einer Beziehung
    • Bestellte Listen
    • Kombinationen von Zugangstypen
  • Ein Kriterium Abfrage -API
  • Standardisierung von SQL Hinweise
  • Standardisierung zusätzlicher Metadaten zur Unterstützung DDL Generation
  • Unterstützung für die Validierung
  • Shared Object Cache -Unterstützung.

Anbieter, die JPA 2.0 unterstützen:

JPA 2.1

Die Entwicklung der JPA -Version 2.1 begann im Juli 2011 als JSR 338. JPA 2.1 wurde am 22. Mai 2013 als endgültig genehmigt.

Die Hauptmerkmale waren enthalten:

  • Konverter, die benutzerdefinierte Codekonvertierungen zwischen Datenbank- und Objekttypen ermöglichen
  • Kriterien Update/Löschen, um Massenaktualisierungen zu ermöglichen und durch die Kriterien -API zu löschen
  • Entitätsdiagramme für teilweise oder angegebenes Abrufen oder Verschmelzung von Objekten.
  • JPQL/Kriterienverbesserungen wie arithmetische Unterabfragen, generische Datenbankfunktionen, die Klausel und die Option "Treat".
  • Schema -Generierung
  • Unterstützung für Gespeicherte Prozeduren

Anbieter, die JPA 2.1 unterstützen:

JPA 2.2

Die Entwicklung von JPA 2.2, einer Wartungsveröffentlichung, begann 2017 unter JSR 338. Die Wartungsüberprüfung wurde am 19. Juni 2017 genehmigt.

Die Hauptmerkmale waren enthalten:

  • Die Hinzufügung von @repeatable zu allen relevanten Anmerkungen
  • Unterstützung für JPA -Anmerkungen, die in Metaannotationen verwendet werden sollen
  • Streaming für Abfragenergebnisse
  • Die Fähigkeit, dass AttributeConverters CDI-injizierbar sein können
  • Unterstützung für Java 8 Datums- und Zeitarten

Anbieter, die JPA 2.2 unterstützen:

Jakarta Persistenz 3.0

Die JPA wurde 2019 in Jakarta Persistence umbenannt und im Jahr 2020 veröffentlicht. Dies beinhaltete die Umbenennung von Paketen und Eigenschaften von Javax.Persistence in Jakarta.Persistence.

Anbieter, die Jakarta Persistenz 3.0 unterstützen:

Jakarta Persistenz 3.1

Version 3.1 wurde 2022 veröffentlicht.[1]

Anbieter, die Jakarta Persistenz unterstützen 3.1:

Siehe auch

Verweise

  1. ^ a b c "Jakarta Persistenz 3.1". Jakarta.ee. Abgerufen 2022-07-27.
  2. ^ "Javaee 6 Tutorial". Orakel.
  3. ^ "Javaee 7 Tutorial". Orakel.
  4. ^ Hibernate entityManager: Java SE -Umgebungen
    Hibernate entityManager: Einen EntityManager in einer Java SE -Umgebung erhalten
  5. ^ "Jakarta Persistenz". Jakarta.ee. Abgerufen 2021-10-05.
  6. ^ "JSR 220 Mitglieder".
  7. ^ Barreto, Charlton. "SDO und JPA". Digitaler Walkabout. Archiviert von das Original am 13. August 2011. Abgerufen 5. Mai 2011.
  8. ^ Edwards, Mike. "SDO und Java Persistence Architecture (JPA)". Öffnen Sie SOA. osoa.org. Abgerufen 5. Mai 2011.
  9. ^ "Hibernate.org - Java Persistenz mit Hibernate". Jboss. Abgerufen 2008-11-17. Hibernate implementiert das Java Persistenzobjekt/relationale Javaapi- und Persistenzmanagement -Schnittstellen
  10. ^ Java Persistenz mit Hibernate. Manning Publikationen. ISBN 9781617290459. Abgerufen 8. Dezember 2013. Gavin King ist der Gründer des Hibernate -Projekts
  11. ^ "Jboss.com - Branchenführung". Jboss. Abgerufen 2008-11-17. JSR 220, EJB 3.0 Spec Committee, Gavin King, Bill Burke, Marc Fleury
  12. ^ "Java Persistenz API FAQ". Sun Microsystems. Archiviert von das Original am 2008-08-22. Abgerufen 2010-07-01. Die Java Persistence API stützt sich auf die besten Ideen von Persistenztechnologien wie Hibernate, TopLink und JDO
  13. ^ "Spring Data - Projektwebsite". Entscheidend. Abgerufen 2018-02-26.
  14. ^ "IBM WebSphere Application Server V7 -Funktionspaket für OSGI -Anwendungen und Java Persistence API". Website herunterladen. IBM. 27. April 2010. Abgerufen 8. Dezember 2013.
  15. ^ "Versant JPA 2-Schritt-Download". Website herunterladen. Actian. Abgerufen 8. Dezember 2013.
  16. ^ "Eclipselink -TCK -Ergebnisse". Eclipse Foundation. Abgerufen 2022-07-27.
  17. ^ "Hibernate Orm 6.0 Serie". Hibernate.org. Abgerufen 2022-07-27.

Externe Links

Allgemeine Information

Tutorials