JPA vs Hibernate
Beveik visoms įmonių programoms reikalinga reguliari prieiga prie reliacinių duomenų bazių. Tačiau problema, su kuria susidūrė ankstesnės technologijos (pvz., JDBC), buvo impedanso neatitikimas (skirtumas tarp objektinių ir reliacinių technologijų). Šios problemos sprendimas buvo pristatytas įvedus abstraktųjį sluoksnį, vadinamą patvarumo sluoksniu, kuris kaupia duomenų bazės prieigą iš verslo logikos. JPA (Java Persistent API) - tai sistema, skirta santykinių duomenų (naudojant persistengimo sluoksnį) valdymui „Java“ programose. „Java“ kūrėjų bendruomenėje naudojama daugybė JPA įgyvendinimų. Hibernate yra pats populiariausias toks JPA įgyvendinimas (kai kurie kiti yra „DataNucleus“, „EclipseLink“ ir „OpenJPA“). Naujausią JPA versiją (JPA 2.0) visapusiškai palaiko „Hibernate 3.5“, kuri buvo išleista 2010 m. Kovo mėn.
Kas yra JPA?
JPA yra „Java“ reliacinių duomenų tvarkymo sistema. Jis gali būti naudojamas su programomis, naudojančiomis JSE („Java Platform“, „Standard Edition“) arba JEE („Java Platform“, „Enterprise Edition“). Dabartinė jos versija yra JPA 2.0, išleista 2009 m. Gruodžio 10 d. JPA pakeitė EJB 2.0 ir EJB 1.1 subjektų pupeles (kurias „Java“ kūrėjų bendruomenė smarkiai kritikavo dėl to, kad jos yra sunkios). Nors subjekto pupelės (EJB) teikė patvarumo objektus, daugelis kūrėjų buvo įpratę naudoti palyginti lengvus objektus, kuriuos siūlo DAO (duomenų prieigos objektai) ir kitas panašias sistemas. Dėl to buvo įvesta JPA ir joje buvo užfiksuota daug tvarkingų minėtų sistemų bruožų.
Patvarumas, kaip aprašyta JPA, apima API (apibrėžtą „javax.persistence“), JPQL („Java“ platforma, „Enterprise Edition“) ir metaduomenis, reikalingus santykiniams objektams. Patvarumo subjekto būsena paprastai išlieka prie lentelės. Subjekto egzemplioriai atitinka reliacinės duomenų bazės lentelės eilutes. Metaduomenys naudojami santykiams tarp subjektų išreikšti. Anotacijos arba atskiri XML aprašų failai (dislokuoti kartu su programa) yra naudojami metaduomenims nurodyti subjektų klasėse. JPQL, panašus į SQL užklausas, naudojamas užklausoms apie saugomus subjektus.
Kas yra hibernate?
Hibernate yra sistema, kuri gali būti naudojama objektų-reliacijų žemėlapiams, skirtiems „Java“ programavimo kalbai. Tiksliau sakant, tai yra ORM (Objektų-reliacinių žemėlapių sudarymo) biblioteka, kuri gali būti naudojama objekto-santykio modeliui susieti su įprastiniu reliaciniu modeliu. Paprastai tariant, tai sukuria atvaizdą tarp „Java“ klasių ir lentelių reliacinėse duomenų bazėse, taip pat tarp „Java“ ir SQL duomenų tipų. Hibernate taip pat gali būti naudojamas duomenų paieškai ir gavimui generuojant SQL skambučius. Todėl programuotojas yra atleidžiamas nuo rankinio rezultatų rinkinių tvarkymo ir objektų konvertavimo. Hibernate yra išleista kaip nemokama ir atviro kodo sistema, platinama pagal GNU licenciją. JPA API įgyvendinimas pateiktas Hibernate 3.2 ir naujesnėse versijose. Gavinas Kingas yra Hibernate įkūrėjas.
Kuo skiriasi JPA ir Hibernate??
JPA yra santykinių duomenų tvarkymo „Java“ programose sistema, o „Hibernate“ yra specifinis JPA įgyvendinimas (taigi, idealiu atveju, JPA ir „Hibernate“ negalima tiesiogiai palyginti). Kitaip tariant, Hibernate yra viena iš populiariausių struktūrų, įgyvendinančių JPA. Hibernate įgyvendina JPA per Hibernate Annotation ir EntityManager bibliotekas, kurios yra įdiegtos hibernate Core bibliotekose. „EntityManager“ ir komentarai seka hibernate gyvenimo ciklu. Naujausią JPA versiją (JPA 2.0) visiškai palaiko „Hibernate 3.5“. JPA pranašumas yra standartizuota sąsaja, taigi kūrėjų bendruomenė su ja bus geriau susipažinusi, nei sulaikytosios veiksenos. Kita vertus, vietinės hibernate API gali būti laikomos galingesnėmis, nes jos funkcijos yra viršesnės nei JPA.