JPA proti Hibernate
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 za to težavo je bila predstavljena z uvedbo abstraktne plasti, imenovane Persistence layer, ki zajema dostop do baze podatkov iz poslovne logike. JPA (Java Persistence API) je ogrodje, namenjeno upravljanju relacijskih podatkov (z uporabo sloja vztrajnosti) v aplikacijah Java. Obstaja veliko izvajalcev JPA, ki se uporabljajo v skupnosti razvijalcev Java. Hibernate je najbolj priljubljena taka izvedba JPA (DataNucleus, EclipseLink in OpenJPA so nekatere druge). Najnovejšo različico JPA (JPA 2.0) v celoti podpira Hibernate 3.5, ki je bil izdan marca 2010.
Kaj je JPA?
JPA je ogrodje za upravljanje relacijskih podatkov za Javo. Lahko se uporablja 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 bila izdana 10. decembra 2009. JPA je nadomestil entitetna gradnika EJB 2.0 in EJB 1.1 (ki ju je skupnost razvijalcev Jave močno kritizirala, ker sta težka). Čeprav so entitetni gradniki (v EJB) zagotovili objekte obstojnosti, je bilo veliko razvijalcev navajenih namesto tega uporabljati razmeroma lahke objekte, ki jih ponujajo DAO (predmeti za dostop do podatkov) in druga podobna ogrodja. Posledično je bil uveden JPA, ki je zajel veliko čednih lastnosti zgoraj omenjenih okvirov.
Vztrajnost, kot je opisana v JPA, zajema API (definiran v javax.vztrajnost), JPQL (Java Platform, Enterprise Edition) in metapodatki, potrebni za relacijske objekte. Stanje obstojne entitete se običajno ohrani v tabeli. Primerki entitete ustrezajo vrsticam tabele relacijske baze podatkov. Metapodatki se uporabljajo za izražanje odnosov med entitetami. Opombe ali ločene datoteke deskriptorjev XML (razporejene z aplikacijo) se uporabljajo za določanje metapodatkov v razredih entitet. JPQL, ki je podoben poizvedbam SQL, se uporablja za poizvedovanje shranjenih entitet.
Kaj je Hibernate?
Hibernate je ogrodje, ki se lahko uporablja za objektno-relacijsko preslikavo, namenjeno programskemu jeziku Java. Natančneje, to je knjižnica ORM (objektno-relacijsko preslikavo), ki se lahko uporablja za preslikavo objektno-relacijskega modela v običajni relacijski model. Preprosto povedano, ustvari preslikavo med razredi in tabelami Java v relacijskih bazah podatkov, tudi med tipi podatkov Java in SQL. Hibernate se lahko uporablja tudi za poizvedovanje in pridobivanje podatkov z generiranjem klicev SQL. Zato je programer razbremenjen ročnega ravnanja z nizi rezultatov in pretvorbo objektov. Hibernate je izdan kot brezplačen in odprtokodni okvir, ki se distribuira pod licenco GNU. Izvedba za API JPA je na voljo v Hibernate 3.2 in novejših različicah. Gavin King je ustanovitelj Hibernate.
Kakšna je razlika med JPA in Hibernate?
JPA je ogrodje za upravljanje relacijskih podatkov v aplikacijah Java, medtem ko je Hibernate posebna implementacija JPA (zato v idealnem primeru JPA in Hibernate ni mogoče neposredno primerjati). Z drugimi besedami, Hibernate je eno najbolj priljubljenih ogrodij, ki izvajajo JPA. Hibernate izvaja JPA prek knjižnic Hibernate Annotation in EntityManager, ki sta implementirani poleg knjižnic Hibernate Core. Tako EntityManager kot Annotations sledita življenjskemu ciklu Hibernate. Hibernate 3.5 v celoti podpira najnovejšo različico JPA (JPA 2.0). Prednost JPA je, da ima vmesnik, ki je standardiziran, zato ga bo skupnost razvijalcev bolje poznala kot Hibernate. Po drugi strani se izvorni API-ji Hibernate lahko štejejo za zmogljivejše, ker so njegove funkcije nadnabor funkcij JPA.