JPA vs hibernacija
Gotovo sve poslovne aplikacije trebaju redovito pristupiti relacijskim bazama podataka. No, problem s kojim su se suočile ranije tehnologije (poput JDBC) bila je neusklađenost impedancije (razlika između objektno orijentiranih i relacijskih tehnologija). Rješenje za ovaj problem uvedeno je uvođenjem apstraktnog sloja koji se zove Persistent layer, koji obuhvaća pristup bazi podataka iz poslovne logike. JPA (Java Persistent API) je okvir posvećen upravljanju relacijskim podacima (pomoću sloja upornosti) u Java aplikacijama. Mnogo je implementacija JPA koje se koriste u zajednici Java programera. Hibernate je najpopularnija takva implementacija JPA (DataNucleus, EclipseLink i OpenJPA su neke druge). Najnoviju verziju JPA (JPA 2.0) u potpunosti podržava Hibernate 3.5 koji je objavljen u ožujku 2010.
Što je JPA?
JPA je okvir za upravljanje relacijskim podacima za Javu. Može se koristiti s aplikacijama koje koriste JSE (Java Platform, Standard Edition) ili JEE (Java Platform, Enterprise Edition). Njegova trenutna verzija je JPA 2.0, koja je objavljena 10. prosinca 2009. JPA je zamijenila entitetski grah EJB 2.0 i EJB 1.1 (koji su žestoko kritizirali zbog jačine zajednice Java programera). Iako je entitetski grah (u EJB) pružio postojanost objekata, mnogi programeri su umjesto toga koristili relativno lagane objekte koje nudi DAO (Data Access Objects) i drugi slični okviri. Kao rezultat toga, predstavljen je JPA, koji je zabilježio mnoge uredne značajke gore spomenutih okvira.
Postojanost opisana u JPA obuhvaća API (definiran u javax.persistent), JPQL (Java Platform, Enterprise Edition) i metapodatke potrebne za relacijske objekte. Stanje entiteta koji istraje obično se primjenjuje na tablici. Primjeri subjekta odgovaraju redovima tablice relacijske baze podataka. Metapodaci se koriste za izražavanje odnosa između entiteta. Bilješke ili zasebne datoteke deskriptora XML (raspoređene s aplikacijom) koriste se za određivanje metapodataka u entitetskim klasama. JPQL, koji je sličan SQL upitima, koristi se za upis pohranjenih entiteta.
Što je hibernacija?
Hibernacija hibernacija je okvir koji se može koristiti za objektno-relacijsko mapiranje namijenjen programskom jeziku Java. Točnije, to je ORM (objektno-relacijsko mapiranje) knjižnica koja se može koristiti za mapiranje objektno-relacijskog modela u konvencionalni relacijski model. Jednostavno rečeno, stvara mapiranje između klasa Java i tablica u relacijskim bazama podataka, također između tipova podataka Java i SQL. Hibernacija se također može koristiti za pretraživanje podataka i dohvaćanje generiranjem SQL poziva. Stoga se programer oslobađa od ručnog rukovanja skupovima rezultata i pretvaranjem objekata. Hibernate se izdaje kao slobodni i otvoreni okvir distribuiran pod GNU licencom. Implementacija JPA API-ja nalazi se u stanju hibernacije 3.2 i novijim verzijama. Gavin King je osnivač hibernacije.
Koja je razlika između JPA i hibernacije?
JPA je okvir za upravljanje relacijskim podacima u Java aplikacijama, dok je hibernacija specifična implementacija JPA (stoga je u idealnom slučaju da se JPA i hibernacija ne mogu izravno uspoređivati). Drugim riječima, hibernacija je jedan od najpopularnijih okvira koji provodi JPA. Hibernate provodi JPA kroz knjižnice Hibernate Annotation i EntityManager koje se implementiraju na vrh Hibernate Core knjižnice. I EntityManager i Napomene prate životni ciklus hibernacije. Najnovija JPA inačica (JPA 2.0) u potpunosti podržava Hibernate 3.5. JPA ima prednost od sučelja koje je standardizirano, pa će zajednica programera biti poznatija od hibernacije. S druge strane, zavičajni API hibernacije mogu se smatrati snažnijim jer su njegove značajke superpopularne od JPA.