Java Persistence API

Z FI WIKI
(Přesměrováno z JPA)
Přejít na: navigace, hledání
This page is also available in English: Java Persistence API (English)

Java Persistence API je Java EE standard pro zajištění perzistence dat prostřednictvím objektově relačního mapování (ORM). Tento standard je definován prostřednictvím specifikace Enterprise JavaBeans 3.0 (JCP 220 [1]), lze jej však použít i samostatně mimo EJB kontejner (tj. např. v obyčejných webových aplikacích).

Historie

V dřívějších verzích EJB (EJB 1.x, EJB 2.x) byla perzistence dat zajišťována prostřednictvím EJB komponent typu Entity EJB, které reprezentovaly data, s nimiž aplikace pracuje. Tyto objekty existují v EJB kontejneru (ten řídi jejich životní cyklus) a přistupuje se k nim vzdáleně převážně prostřednictvím set/get metod. Změny jednotlivých atributů jsou při potvrzení transakce (commit) EJB kontejnerem propagovány do relační databáze.

Protože by vzdálený přístup k jednotlivým atributům objektu byl náročný (přístup ke každému atributu vyžaduje nové vzdálené volání), používaly se tzv. Data Transfer Object (DTO, někdy nazývané Value Objects), které zapouzdřovaly data příslušné entity. Předání všech dat entity se pak prostřednictvím tohoto objektu zajistilo jedním síťovým voláním.

Pro read-only operace se z důvodů úspory režie EJB kontejneru dokonce ani nepoužívaly Entity EJB, ale příslušné DTO objekty se vytvářely přímo z relační databáze pomocí tzv. DAO objektů. V praxi to vedlo k tomu, že některé EJB aplikace používaly výhradně komponenty typu Session EJB a místo Entity EJB používaly nějaký samostatný ORM nástroj (např. Hibernate).

Tento princip se osvědčil a na jeho základě vznikl standard Java Persistence API (původní komponenty typu Entity EJB jsou stále podporovány kvůli zpětné kompatibilitě).

Princip

Objekty reprezentující data jsou (narozdíl od komponent typu Entity EJB) obyčejné POJO objekty, které nepotřebují žádný kontejner a pracuje se s nimi jako s běžnými objekty. Tyto objekty jsou pomocí anotace doplněny o pomocné informace, které definují způsob jejich mapování na tabulky relační databáze.

Odkazy