Jakarta Persistence - Jakarta Persistence

Jakarta Persistence ( JPA ; dříve Java Persistence API) je specifikace rozhraní Jakarta EE pro programování aplikací, která popisuje správu relačních dat v podnikových aplikacích Java .

Perzistence v tomto kontextu pokrývá tři oblasti:

Referenční implementace pro SPS je EclipseLink .

Dějiny

Konečné datum vydání specifikace JPA 1.0 bylo 11. května 2006 jako součást Java Community Process JSR 220. Specifikace JPA 2.0 byla vydána 10. prosince 2009 (platforma Java EE 6 vyžaduje JPA 2.0). Specifikace JPA 2.1 byla vydána 22. dubna 2013 (platforma Java EE 7 vyžaduje JPA 2.1). Specifikace JPA 2.2 byla vydána v létě 2017.

Subjekty

Entita perzistence je lehká třída Java, jejíž stav obvykle přetrvává do tabulky v relační databázi . Instance takové entity odpovídají jednotlivým řádkům v tabulce. Entity mají obvykle vztahy s jinými entitami a tyto vztahy jsou vyjádřeny prostřednictvím objektových/relačních metadat. Tato metadata lze zadat přímo v souboru třídy entit pomocí anotací nebo v samostatném souboru deskriptoru XML distribuovaném s aplikací.

Dotazovací jazyk

Jakarta Persistence Query Language (JPQL; dříve Java Persistence Query Language) umožňuje dotazy vůči osobám uloženy v relační databázi. Dotazy se syntaxí podobají dotazům SQL, ale fungují spíše proti objektům entit, než přímo s databázovými tabulkami.

Motivace

Před zavedením specifikace EJB 3.0 mnoho vývojářů podnikové Javy používalo lehké trvalé objekty poskytované buď pomocí rámců perzistence (například Hibernate ), nebo objekty pro přístup k datům, namísto použití fazolí entit . Důvodem je to, že fazole entit, v předchozích specifikacích EJB, vyžadovaly hodně komplikovaný kód a vyžadovaly velkou stopu zdrojů, a mohly být použity pouze na aplikačních serverech Java EE kvůli propojení a závislostem ve zdrojovém kódu mezi objekty bean a DAO nebo trvalosti rámců. Mnoho funkcí původně představených v rámci trvalosti třetích stran bylo začleněno do rozhraní Java Persistence API a projekty jako Hibernate a TopLink Essentials se staly implementacemi specifikace API Java Persistence API.

Související technologie

Podnikové fazole

Specifikace EJB 3.0 (sama součást platformy Java EE 5) obsahovala definici API Java Persistence. Vývojáři však ke spouštění aplikací využívajících toto API trvalosti nepotřebují kontejner EJB ani aplikační server Java EE. Budoucí verze rozhraní Java Persistence API budou definovány spíše v samostatném JSR a specifikaci než v EJB JSR/specifikaci.

Rozhraní Java Persistence API nahrazuje řešení trvalosti EJB 2.0 CMP (Container-Managed Persistence).

Java Data Objects API

Rozhraní API Java Persistence bylo vyvinuto zčásti za účelem sjednocení rozhraní Java Data Objects API a rozhraní EMP B 2.0 Container Managed Persistence (CMP). Většina produktů podporujících každé ze dvou rozhraní API podporuje rozhraní Java Persistence API.

Rozhraní API Java Persistence specifikuje perzistenci pouze pro systémy správy relační databáze zaměřením na objektově relační mapování (ORM). Někteří poskytovatelé JPA podporují jiné databázové modely , i když to je mimo rámec návrhu JPA. Úvodní část specifikace JPA uvádí: "Technickým cílem této práce je poskytnout objektové/relační mapovací zařízení vývojáři aplikací Java pomocí modelu domény Java ke správě relační databáze."

Java Data Objects specifikace podporuje ORM stejně jako vytrvalost s jinými typy databázových modelů, například prostý databázový soubor a NoSQL databází, včetně databází dokumentů , databází graf nějaké mnoho dalších datových úložišť.

Service Data Object API

Cílem návrhářů API Java Persistence API bylo zajistit relační perzistenci, přičemž mnoho klíčových oblastí bylo převzato z nástrojů objektově relačního mapování, jako je Hibernate a TopLink . Rozhraní Java Persistence API vylepšilo a nahradilo EJB 2.0, o čemž svědčí jeho zahrnutí do EJB 3.0. API Service Data Objects (SDO) (JSR 235) má velmi odlišný cíl než API Java Persistence a je považováno za doplňkové. SDO API je navrženo pro architektury orientované na služby , více datových formátů, nikoli pouze relační data a více programovacích jazyků. Java Community Process řídí Java verze SDO API; v C ++ verze SDO API je řízena prostřednictvím OASIS .

Přezimovat

Hibernate, založený Gavinem Kingem, poskytuje open source objektově relační mapovací framework pro Javu . Verze 3.2 a novější poskytují implementaci pro Java Persistence API. King zastupoval JBoss na JSR 220, expertní skupině JCP pověřené vývojem JPA. To vedlo k pokračující kontroverzi a spekulacím kolem vztahu mezi JPA a Hibernate. Sun Microsystems uvedl, že nápady pocházely z několika rámců, včetně Hibernate a Java Data Objects .

Spring Data JPA

Spring Data JPA je implementací abstrakce úložiště, která je klíčovým stavebním kamenem návrhu založeného na doméně na základě jarního aplikačního rámce Java . Transparentně podporuje všechny dostupné implementace JPA a podporuje operace CRUD i pohodlné provádění databázových dotazů.

Historie verzí

JPA 2.0

Vývoj nové verze JPA 2.0 byl zahájen v červenci 2007 v komunitním procesu Java jako JSR 317. JPA 2.0 byla schválena jako konečná dne 10. prosince 2009. JPA 2.0 bylo zaměřeno na řešení funkcí, které byly přítomny v některých populárních Dodavatelé ORM, ale nemohli získat souhlas pro JPA 1.0.

Mezi hlavní funkce patří:

  • Rozšířená funkce mapování relačního objektu
    • Podpora pro kolekce vložených objektů propojených v ORM se vztahem mnoho k jednomu
    • Objednané seznamy
    • Kombinace typů přístupu
  • Kritérium API dotazu
  • Standardizace rad SQL
  • Standardizace dalších metadat na podporu generování DDL
  • Podpora pro validaci
  • Podpora mezipaměti sdílených objektů.

Dodavatelé podporující JPA 2.0:

SPS 2.1

Vývoj JPA verze 2.1 začal v červenci 2011 jako JSR 338. JPA 2.1 byl schválen jako konečný dne 22. května 2013.

Mezi hlavní funkce patří:

  • Převaděče, které umožňují převody vlastních kódů mezi databázovými a objektovými typy
  • Aktualizace/odstranění kritérií pro povolení hromadných aktualizací a odstraňování prostřednictvím rozhraní Criteria API
  • Entity graphs for partial or specified fetching or merging of objects.
  • Vylepšení JPQL/Kritéria, jako jsou aritmetické poddotazy, obecné databázové funkce, klauzule ON a volba TREAT.
  • Generování schématu
  • Podpora pro uložené procedury

Dodavatelé podporující JPA 2.1:

SPS 2.2

Vývoj JPA 2.2, verze pro údržbu, začal v roce 2017 pod JSR 338. Revize údržby byla schválena 19. června 2017.

Mezi hlavní funkce patří:

  • Přidání @Repeatable ke všem relevantním anotacím
  • Podpora anotací JPA, které mají být použity v metaanotacích
  • Streamování pro výsledky dotazů
  • Schopnost AttributeConverters být injekčně CDI
  • Podpora typů data a času Java 8

Dodavatelé podporující JPA 2.2:

Jakarta Persistence 3.0

SPS bylo přejmenováno na Jakarta Persistence v roce 2019 a verze 3.0 byla vydána v roce 2020. To zahrnovalo přejmenování balíků a vlastností z javax.persistence na jakarta.persistence.

Dodavatelé podporující Jakarta Persistence 3.0:

Viz také

Reference

externí odkazy

Obecné informace

Návody