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:
- Selve API -et, definert i
javax.persistencepakken - The Jakarta Persistence Query Language (JPQL, tidligere Java Persistence Query Language)
- Objekt/relasjonsmetadata
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:
- Batoo JPA
- DataNucleus (tidligere JPOX)
- EclipseLink (tidligere Oracle TopLink )
- IBM , for WebSphere Application Server
- JBoss med dvalemodus
- ObjectDB
- OpenJPA
- OrientDB
- Versant Corporation JPA ( objektdatabase )
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:
- DataNucleus
- EclipseLink
- Dvalemodus
- OpenJPA (fra versjon 2.2.0)
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:
- DataNucleus (fra versjon 5.1)
- EclipseLink (fra versjon 2.7)
- Dvalemodus (fra versjon 5.3)
- OpenJPA (fra versjon 3.0.0)
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:
- DataNucleus (fra versjon 6.0)
- EclipseLink (fra versjon 3.0)
- Dvalemodus (fra versjon 5.5)
Se også
Referanser
Eksterne linker
Generell info
-
Offesiell nettside
- Dokumentasjon for den endelige versjonen av EJB3 -spesifikasjonen (kalt JSR220)
- GlassFishs persistens -side
- JCP Persistence -side
Opplæringsprogrammer
- Java EE 6 Persistence API Javadoc
- Java EE 6 Persistence API -opplæring
- Java EE 7 Persistence API Javadoc
- Java EE 7 Persistence API -opplæring
- Utholdenhet i Java EE 5 -opplæringen