Jakarta Persistence - Jakarta Persistence

Jakarta Persistence ( JPA ; tidigare Java Persistence API) är en specifikationsgränssnittsspecifikation för programmeringsgränssnitt i Jakarta som beskriver hanteringen av relationsdata i företagets Java -applikationer.

Ihållande i detta sammanhang täcker tre områden:

Den referensimplementering för JPA är EclipseLink .

Historia

Det slutliga utgivningsdatumet för JPA 1.0 -specifikationen var den 11 maj 2006 som en del av Java Community Process JSR 220. JPA 2.0 -specifikationen släpptes 10 december 2009 (Java EE 6 -plattformen kräver JPA 2.0). JPA 2.1 -specifikationen släpptes 22 april 2013 (Java EE 7 -plattformen kräver JPA 2.1). JPA 2.2 -specifikationen släpptes sommaren 2017.

Enheter

En uthållighet enhet är en lätt Java-klass med dess tillstånd vanligtvis kvarstod till en tabell i en relationsdatabas . Instanser av en sådan enhet motsvarar enskilda rader i tabellen. Entiteter har vanligtvis relationer med andra enheter, och dessa relationer uttrycks genom objekt-/relationsmetadata. Denna metadata kan specificeras direkt i entitetsklassfilen med hjälp av kommentarer eller i en separat XML -deskriptorfil som distribueras med programmet.

Frågespråk

Den Jakarta Persistence Query Language (JPQL, tidigare Java Persistence Query Language) gör frågor mot enheter som lagras i en relationsdatabas. Frågor liknar SQL -frågor i syntax men fungerar mot enhetsobjekt snarare än direkt med databastabeller.

Motivering

Före introduktionen av EJB 3.0 -specifikationen använde många företags Java -utvecklare lätta, persistenta objekt som tillhandahålls av antingen persistensramar (t.ex. Hibernate ) eller dataåtkomstobjekt istället för att använda enhetsbönor . Detta beror på att enhetsbönor i tidigare EJB -specifikationer krävde mycket komplicerad kod och påförde ett stort resursavtryck, och de kunde endast användas på Java EE -applikationsservrar på grund av sammankopplingar och beroenden i källkoden mellan bönor och DAO -objekt eller uthållighet ramar. Således införlivades många av de funktioner som ursprungligen presenterades i tredjepartsbeständighetsramar i Java Persistence API, och projekt som Hibernate och TopLink Essentials har blivit implementeringar av Java Persistence API-specifikationen.

Relaterad teknik

Företagsbönor

Den EJB 3,0 specifikation (i sig en del av Java EE 5-plattformen) inkluderade en definition av Java Persistence API. Utvecklare behöver dock inte en EJB -behållare eller en Java EE -applikationsserver för att köra applikationer som använder detta persistens -API. Framtida versioner av Java Persistence API kommer att definieras i en separat JSR och specifikation snarare än i EJB JSR/specifikationen.

Java Persistence API ersätter persistenslösningen för EJB 2.0 CMP (Container-Managed Persistence).

Java Data Objects API

Java Persistence API utvecklades delvis för att förena Java Data Objects API och EJB 2.0 Container Managed Persistence (CMP) API. De flesta produkter som stöder vart och ett av de två API: erna stöder Java Persistence API.

Java Persistence API anger endast uthållighet för relationsdatabashanteringssystem genom att fokusera på objektrelationell kartläggning (ORM). Vissa JPA -leverantörer stöder andra databasmodeller , även om detta inte omfattas av JPA: s design. Inledningsdelen i JPA -specifikationen säger: "Det tekniska målet med detta arbete är att tillhandahålla en objekt-/relationskartläggningsfunktion för Java -applikationsutvecklaren som använder en Java -domänmodell för att hantera en relationsdatabas."

Den Java Data Objects specifikation stöder Orm samt uthållighet för andra typer av databasmodeller, till exempel platt fil databaser och NoSQL -databaser, inklusive dokumentdatabaser , grafdatabaser något många andra datalager.

Service Data Object API

Konstruktörerna för Java Persistence API syftade till att tillhandahålla relationell uthållighet, med många av de viktigaste områdena hämtade från objektrelationella kartläggningsverktyg som Hibernate och TopLink . Java Persistence API förbättrades och ersatte EJB 2.0, vilket framgår av dess införande i EJB 3.0. Service Data Objects (SDO) API (JSR 235) har ett helt annat mål än det för Java Persistence API och anses komplementärt. SDO API är utformat för serviceorienterade arkitekturer , flera dataformat snarare än bara relationsdata och flera programmeringsspråk. Den Java Community Process hanterar Java versionen av SDO API; den C ++ versionen av SDO API hanteras via OASIS .

Övervintra

Hibernate, grundat av Gavin King, tillhandahåller en öppen källkod för objektrelationell mappning för Java . Version 3.2 och senare ger en implementering för Java Persistence API. King representerade JBoss på JSR 220, JCP -expertgruppen som ansvarade för att utveckla JPA. Detta ledde till pågående kontroverser och spekulationer kring förhållandet mellan JPA och viloläge. Sun Microsystems uppgav att idéer kom från flera ramverk, inklusive Hibernate och Java Data Objects .

Spring Data JPA

Spring Data JPA är en implementering av förvarets abstraktion som är en viktig byggsten för domändriven design baserad på Java-applikationsramverket Spring . Det stöder transparent alla tillgängliga JPA -implementeringar och stöder CRUD -operationer samt bekvämt utförande av databasfrågor.

Versionshistorik

JPA 2.0

Utvecklingen av en ny version av JPA 2.0 startades i juli 2007 i Java Community Process som JSR 317. JPA 2.0 godkändes som slutgiltigt den 10 december 2009. Fokus för JPA 2.0 var att ta itu med funktioner som fanns i några av de populäraste ORM -leverantörer men kunde inte få konsensusgodkännande för JPA 1.0.

Huvudfunktioner som inkluderades var:

  • Utökad objektrelationell kartläggningsfunktion
    • Stöd för samlingar av inbäddade objekt, länkade i ORM med en mång-till-en-relation
    • Beställda listor
    • Kombinationer av åtkomsttyper
  • En kriteriefråga API
  • Standardisering av SQL -tips
  • Standardisering av ytterligare metadata för att stödja DDL -generation
  • Stöd för validering
  • Stöd för cacheminne för delat objekt.

Leverantörer som stöder JPA 2.0:

JPA 2.1

Utvecklingen av JPA version 2.1 började i juli 2011 som JSR 338. JPA 2.1 godkändes som slutgiltigt den 22 maj 2013.

Huvudfunktioner som inkluderades var:

  • Omvandlare som tillåter anpassade kodomvandlingar mellan databas- och objekttyper
  • Kriterier uppdaterar/tar bort för att tillåta massuppdateringar och raderingar via Criteria API
  • Entitetsdiagram för delvis eller specificerad hämtning eller sammanslagning av objekt.
  • JPQL/Criteria -förbättringar som aritmetiska underfrågor, generiska databasfunktioner, join ON -klausul och alternativet TREAT.
  • Schema generation
  • Stöd för lagrade procedurer

Leverantörer som stöder JPA 2.1:

JPA 2.2

Utvecklingen av JPA 2.2, ett underhållsmeddelande, började 2017 under JSR 338. Underhållsgranskningen godkändes den 19 juni 2017.

Huvudfunktioner som inkluderades var:

  • Tillägget av @Repeatable till alla relevanta kommentarer
  • Stöd för JPA -anteckningar som ska användas i metaanoter
  • Streaming för sökresultat
  • Möjligheten för AttributeConverters att vara CDI-injicerbar
  • Stöd för Java 8 datum- och tidstyper

Leverantörer som stöder JPA 2.2:

Jakarta Persistence 3.0

JPA döptes om till Jakarta Persistence 2019 och version 3.0 släpptes 2020. Detta omfattade byte av paket och egenskaper från javax.persistence till jakarta.persistence.

Leverantörer som stöder Jakarta Persistence 3.0:

Se även

Referenser

externa länkar

Generell information

Handledningar