Jakarta Persistence - Jakarta Persistence

Jakarta Persistence ( JPA ; tidligere Java Persistence API) er en Jakarta EE -programmeringsgrensesnittspesifikasjon som beskriver håndtering av relasjonsdata i enterprise Java -applikasjoner.

Utholdenhet i denne sammenhengen dekker tre områder:

Den referanseimplementasjon for JPA er EclipseLink .

Historie

Den siste utgivelsesdatoen for JPA 1.0 -spesifikasjonen var 11. mai 2006 som en del av Java Community Process JSR 220. JPA 2.0 -spesifikasjonen ble utgitt 10. desember 2009 (Java EE 6 -plattformen krever JPA 2.0). JPA 2.1 -spesifikasjonen ble utgitt 22. april 2013 (Java EE 7 -plattformen krever JPA 2.1). JPA 2.2 -spesifikasjonen ble utgitt sommeren 2017.

Enheter

En utholdenhet enhet er en lett Java klasse med sin tilstand vanligvis vedvarte til en tabell i en relasjonsdatabase . Forekomster av en slik enhet tilsvarer individuelle rader i tabellen. Enheter har vanligvis relasjoner til andre enheter, og disse relasjonene uttrykkes gjennom objekt-/relasjonsmetadata. Disse metadataene kan spesifiseres direkte i entitetsklassfilen ved hjelp av merknader eller i en egen XML -deskriptorfil distribuert med programmet.

Spørrespråk

The Jakarta Persistence Query Language (JPQL, tidligere Java Persistence Query Language) gjør spørringer mot enheter som er lagret i en relasjonsdatabase. Spørringer ligner SQL -spørringer i syntaks, men fungerer mot enhetsobjekter i stedet for direkte med databasetabeller.

Motivasjon

Før introduksjonen av EJB 3.0 -spesifikasjonen, brukte mange enterprise -Java -utviklere lette, persistente objekter levert av enten utholdenhetsrammer (for eksempel dvalemodus ) eller datatilgangsobjekter i stedet for ved å bruke enhetsbønner . Dette er fordi enhetsbønner i tidligere EJB -spesifikasjoner krevde mye komplisert kode og påførte et stort ressursavtrykk, og de kunne bare brukes på Java EE -applikasjonsservere på grunn av sammenkoblinger og avhengigheter i kildekoden mellom bønner og DAO -objekter eller utholdenhet rammer. Således ble mange av funksjonene som opprinnelig ble presentert i tredjeparts persistens-rammer integrert i Java Persistence API, og prosjekter som Hibernate og TopLink Essentials har blitt implementeringer av Java Persistence API-spesifikasjonen.

Relaterte teknologier

Enterprise Beans

Den EJB 3.0 spesifikasjon (i seg selv en del av den Java EE 5-plattform) inkludert en definisjon av Java Persistence API. Utviklere trenger imidlertid ikke en EJB -beholder eller en Java EE -applikasjonsserver for å kjøre applikasjoner som bruker dette persistens -APIet. Fremtidige versjoner av Java Persistence API vil bli definert i en egen JSR og spesifikasjon i stedet for i EJB JSR/spesifikasjonen.

Java Persistence API erstatter utholdenhetsløsningen til EJB 2.0 CMP (Container-Managed Persistence).

Java Data Objects API

Java Persistence API ble delvis utviklet for å forene Java Data Objects API og EJB 2.0 Container Managed Persistence (CMP) API. De fleste produkter som støtter hver av de to API -ene støtter Java Persistence API.

Java Persistence API angir utholdenhet bare for relasjonsdatabasehåndteringssystemer ved å fokusere på objektrelasjonell kartlegging (ORM). Noen JPA -leverandører støtter andre databasemodeller , selv om dette er utenfor omfanget av JPAs design. I introduksjonsdelen av JPA -spesifikasjonen står det: "Det tekniske målet med dette arbeidet er å tilby et objekt/relasjonskartleggingsanlegg for Java -applikasjonsutvikleren som bruker en Java -domenemodell for å administrere en relasjonsdatabase."

Den Java dataobjekter Støtte spesifikasjon Orm samt utholdenhet for andre typer av databasemodeller, for eksempel flate fil- databaser og NoSQL databaser, inkludert dokumentdatabaser , grafdatabaser eventuelle mange andre datalagre.

Service Data Object API

Designerne av Java Persistence API hadde som mål å sørge for relasjonell utholdenhet, med mange av de viktigste områdene hentet fra objektrelasjonelle kartleggingsverktøy som Hibernate og TopLink . Java Persistence API ble forbedret og erstattet EJB 2.0, noe som fremgår av inkluderingen i EJB 3.0. Service Data Objects (SDO) API (JSR 235) har et helt annet mål enn Java Persistence API og anses som komplementær. SDO API er designet for serviceorienterte arkitekturer , flere dataformater i stedet for bare relasjonsdata og flere programmeringsspråk. Den Java Community Process styrer Java-versjonen av SDO API; den C ++ versjonen av SDO API styres via OASIS .

Dvalemodus

Dvalemodus, grunnlagt av Gavin King, tilbyr et åpen kildekode- objektrelasjonelt kartleggingsramme for Java . Versjon 3.2 og senere gir en implementering for Java Persistence API. King representerte JBoss på JSR 220, JCP -ekspertgruppen som var ansvarlig for å utvikle JPA. Dette førte til pågående kontroverser og spekulasjoner rundt forholdet mellom JPA og dvalemodus. Sun Microsystems uttalte at ideer kom fra flere rammer, inkludert Hibernate og Java Data Objects .

Vårdata JPA

Spring Data JPA er en implementering av depotabstraksjonen som er en sentral byggestein for domenedrevet design basert på Java-applikasjonsrammen Spring . Den støtter transparent alle tilgjengelige JPA -implementeringer og støtter CRUD -operasjoner samt praktisk utførelse av databasespørringer.

Versjonshistorikk

JPA 2.0

Utviklingen av en ny versjon av JPA 2.0 ble startet i juli 2007 i Java Community Process som JSR 317. JPA 2.0 ble godkjent som endelig 10. desember 2009. Fokuset for JPA 2.0 var å ta opp funksjoner som var til stede i noen av de populære ORM -leverandører, men kunne ikke få konsensusgodkjenning for JPA 1.0.

Hovedtrekkene som ble inkludert var:

  • Utvidet funksjon for objektrelasjonell kartlegging
    • Støtte for samlinger av innebygde objekter, koblet i ORM med et mange-til-ett-forhold
    • Bestilte lister
    • Kombinasjoner av tilgangstyper
  • En kriteriespørsmål -API
  • Standardisering av SQL -tips
  • Standardisering av flere metadata for å støtte DDL -generasjon
  • Støtte for validering
  • Støtte for buffer for delt objekt.

Leverandører som støtter JPA 2.0:

JPA 2.1

Utviklingen av JPA versjon 2.1 begynte i juli 2011 som JSR 338. JPA 2.1 ble godkjent som endelig 22. mai 2013.

Hovedtrekkene som ble inkludert var:

  • Omformere, som tillater tilpassede kodekonverteringer mellom database- og objekttyper
  • Kriterier oppdaterer/sletter for å tillate masseoppdateringer og slettinger gjennom Criteria API
  • Enhetsgrafer for delvis eller spesifisert henting eller sammenslåing av objekter.
  • JPQL/Criteria -forbedringer som aritmetiske undersøkelser, generiske databasefunksjoner, join ON -klausul og TREAT -alternativet.
  • Skjemagenerering
  • Støtte for lagrede prosedyrer

Leverandører som støtter JPA 2.1:

JPA 2.2

Utviklingen av JPA 2.2, en vedlikeholdsutgivelse, begynte i 2017 under JSR 338. Vedlikeholdsgjennomgangen ble godkjent 19. juni 2017.

Hovedtrekkene som ble inkludert var:

  • Tillegget av @Repeatable til alle relevante merknader
  • Støtte for JPA -merknader som skal brukes i metaanoter
  • Streaming for spørringsresultater
  • Evnen til AttributeConverters å være CDI-injiserbar
  • Støtte for Java 8 dato og klokkeslett

Leverandører som støtter JPA 2.2:

Jakarta Persistence 3.0

JPA ble omdøpt til Jakarta Persistence i 2019 og versjon 3.0 ble utgitt i 2020. Dette inkluderte omdøping av pakker og eiendommer fra javax.persistence til jakarta.persistence.

Leverandører som støtter Jakarta Persistence 3.0:

Se også

Referanser

Eksterne linker

Generell info

Opplæringsprogrammer