JPA proti mirovanju
Skoraj vse poslovne aplikacije morajo redno dostopati do relacijskih baz podatkov. Toda težava s prejšnjimi tehnologijami (kot je JDBC) je bila neusklajenost impedance (razlika med objektno usmerjenimi in relacijskimi tehnologijami). Rešitev tega problema je bila uvedena z uvedbo abstraktnega sloja, imenovanega Obstojni sloj, ki zajema dostop do baze podatkov iz poslovne logike. JPA (Java Persistent API) je okvir, namenjen upravljanju relacijskih podatkov (z uporabo obstojnega sloja) v aplikacijah Java. V skupnosti razvijalcev Java obstaja veliko izvedb JPA, ki jih uporablja prodajalec. Hibernate je najbolj priljubljena takšna implementacija JPA (DataNucleus, EclipseLink in OpenJPA so nekateri drugi). Najnovejšo različico JPA (JPA 2.0) v celoti podpira Hibernate 3.5, ki je izšla marca 2010.
Kaj je JPA?
JPA je okvir za upravljanje relacijskih podatkov za Javo. Uporablja se lahko z aplikacijami, ki uporabljajo JSE (Java Platform, Standard Edition) ali JEE (Java Platform, Enterprise Edition). Njegova trenutna različica je JPA 2.0, ki je izšla 10. decembra 2009. JPA je nadomestila fižol EJB 2.0 in EJB 1.1 (ki jih je skupnost razvijalcev Java močno kritizirala zaradi težke teže). Čeprav je entitetni fižol (v EJB) zagotavljal obstojne predmete, so mnogi razvijalci namesto tega uporabili razmeroma lahke predmete, ki jih ponuja DAO (Data Access Objects) in drugi podobni okviri. Kot rezultat tega je bil predstavljen JPA in je zajel številne lepote zgoraj omenjenih okvirov.
Obstojnost, opisana v JPA, zajema API (definiran v javax.persistence), JPQL (Java Platform, Enterprise Edition) in metapodatke, potrebne za relacijske objekte. Stanje subjekta, ki vztraja, se običajno hrani v tabeli. Primeri entitete ustrezajo vrsticam tabele relacijske baze podatkov. Metapodatki se uporabljajo za izražanje odnosov med entitetami. Obvestila ali ločene deskriptorske datoteke XML (razporejene z aplikacijo) se uporabljajo za določanje metapodatkov v entitetnih razredih. JPQL, ki je podoben poizvedbam SQL, se uporablja za poizvedbo shranjenih entitet.
Kaj je mirovanje?
Hibernacija je okvir, ki ga lahko uporabimo za objektno-relacijsko preslikavo, namenjeno programskemu jeziku Java. Natančneje, knjižnica ORM (objektno-relacijsko preslikavo) se lahko uporablja za preslikavo objektno-relacijskega modela v običajni relacijski model. Preprosto povedano, ustvari preslikavo med razredi Java in tabelami v relacijskih bazah podatkov, tudi med tipi podatkov Java do SQL. Hibernacija se lahko uporablja tudi za poizvedovanje in pridobivanje podatkov z ustvarjanjem klicev SQL. Zato je programer razrešen pred ročnim rokovanjem z rezultati in pretvorbo predmetov. Hibernate se sprosti kot brezplačni in odprtokodni okvir, ki se distribuira pod licenco GNU. Izvajanje API-ja JPA je na voljo v stanju hibernacije 3.2 in poznejših različicah. Gavin King je ustanovitelj hibernacije.
Kakšna je razlika med JPA in mirovanjem?
JPA je okvir za upravljanje relacijskih podatkov v aplikacijah Java, hibernacija pa je specifična implementacija JPA (zato v idealnem primeru JPA in hibernacije ni mogoče neposredno primerjati). Z drugimi besedami, mirovanje je eden najbolj priljubljenih okvirov, ki izvaja JPA. Hibernate izvaja JPA prek knjižnic Hibernate Annotation in EntityManager, ki se izvajajo nad knjižnicami Hibernate Core. Tako EntityManager kot obvestila sledijo življenjskemu ciklu mirovanja. Najnovejšo različico JPA (JPA 2.0) v celoti podpira Hibernate 3.5. Prednost JPA ima vmesnik, ki je standardiziran, zato ga bo skupnost razvijalcev bolj poznala kot mirovanje. Po drugi strani pa lahko domorodne API-je za mirovanje štejemo za močnejše, saj so njegove lastnosti presežek lastnosti JPA.