„Java“ programos tradiciškai naudojo tokias technologijas kaip JDBC („Java Database Connectivity“), kad pasiektų reliacines duomenų bazes, kad būtų galima nuolat saugoti duomenis. Pagrindinė problema buvo skirtumas tarp objektinių ir reliacinių technologijų. JDBC API kūrėjams reikės koduoti pačias primityviausias CRUD (kurti, skaityti, atnaujinti ir ištrinti) operacijas SQL, kurios nebuvo perkeliamos..
Be to, kodas buvo visiškai priklausomas nuo SQL, o tai nėra standartinė reliacinių duomenų bazių specifikacija, dėl kurios būtų sunkiau pereiti iš vienos duomenų bazės į kitą. Problema yra tai, kad reliacinė technologija yra orientuota į duomenis ir jų ryšį, tuo tarpu į objektą orientuota paradigma pabrėžia ne tik duomenis, bet ir su jais atliekamas operacijas. Dėl to nesutampa objekto ir santykinės varžos. Vienas plačiai priimtas sprendimas yra objektų ir ryšių žemėlapiai (ORM).
Hibernate yra „Java“ programavimo kalbos ORM (Object / Relational Mapping) programa, skirta duomenų patvarumui. Tai paprasčiausiai yra atvirojo kodo objektų-reliacinių žemėlapių sudarymo sprendimas, kuris „Java“ klases priskiria duomenų bazių lentelėms reliacinėse duomenų bazėse ir nuo „Java“ iki SQL duomenų tipų. Tai yra lengva ORM sistema, platinama pagal GNU licenciją, kurios tikslas - suteikti kūrėjams skaidrų mechanizmą, kad būtų pasiektas patvarumas. Jis naudoja galingą užklausos kalbą, panašią į SQL, vadinamą HQL (sutrumpinta hibernate užklausos kalba), kuri greitai integruojasi tiek su esamomis, tiek su naujomis programomis, nekeisdama likusios programos. Be to, jis visiškai atitinka į objektą orientuotas sąvokas, tokias kaip paveldėjimas, polimorfizmas ir asociacija. Geriausia tai, kad norint pasiekti patvarumą nereikia modifikuoti taikymo klasės.
„Java Persistent API“, arba JPA, yra specifikacija, apibūdinanti sąsają, skirtą objekto-santykio atvaizdavimui ir nuolatiniam objekto valdymui. Be API apibrėžimo, jame apibrėžtas taisyklių ir gairių rinkinys, kaip įgyvendinti objektų reliacinį žemėlapių sudarymą ir kaip šias specifikacijas suderinti su visais JPA teikėjais. Hibernate yra pažangiausias ir plačiausiai naudojamas ORM įgyvendinant JPA gaires. JPA tiesiog teikia objekto / reliacinio žemėlapių sudarymo platformą duomenims tarp „Java“ objektų / klasių ir reliacinei duomenų bazei tvarkyti „Java“ programose. Tai sąsajos specifikacija, skirta JPA diegimo tiekėjams, norint sukurti ORM diegimo standartą, kad būtų galima nukreipti į aukšto našumo duomenų prieigos lygmens reikalavimus. Hibernate yra populiariausias JPA tiekėjas.
JPA, sutrumpintai „Java Persistent API“, yra specifikacija, skirta pasiekti, valdyti ir išsaugoti duomenis programose, naudojant „Java Platform“, „Standard Edition“ (Java, SE) ir „Java Platform, Enterprise Edition“ (Java, EE). Hibernate, kita vertus, yra daugiau ORM diegimo įrankis, atitinkantis JPA specifikacijas.
JPA yra „Java“ objekto-reliacinio žemėlapio specifikacija, leidžianti kūrėjams daug greičiau ir efektyviau atlikti duomenų bazių operacijas ir taip palengvinti sąveiką su duomenų bazėmis. Tai yra standartinė patvarumo ir objektų santykinių žemėlapių API, teikianti keletą privalumų duomenų įpareigojimo operacijų kūrėjams. Hibernate yra atvirojo kodo objektų reliacinio žemėlapio įrankis, palengvinantis „Java“ programų kūrimą, kad prisijungimas prie duomenų bazių būtų daug lengvesnis nei bet kada.
JPA problema yra ta, kad tai tik specifikacija, kurioje nėra jokių įgyvendinimo klasių. API yra tik klasių ir metodų rinkinys, skirtas nuolatiniam duomenų saugojimui duomenų bazėje laikantis konkrečių taisyklių ir reglamentų, kurių turi laikytis JPA pardavėjai. Hibernate yra vienas iš daugelio JPA įgyvendinimo tiekėjų, įgyvendinančių JPA specifikacijas bet kurioje JPA palaikančioje aplinkoje, įskaitant „Java SE“ ir „Java EE“ programų serverius..
Hibernate sąranka yra ne tik populiariausias JPA diegimo teikėjas, bet ir savo pradinė API, kuria siekiama skatinti atgalinį suderinamumą ir pritaikyti nestandartines funkcijas. „Hibernate“ yra keletas funkcijų, kurių nepalaiko „Java Persistent API“, tokios kaip išplėstiniai identifikatorių generatoriai, nauja datos ir laiko API, pakartojamos anotacijos, užklausų garais rezultatai, tinkinami CRUD sakiniai, nekintami subjektai, natūralių ID palaikymas, nesusijusių subjektų ad hoc prisijungimas. ir kt.
„EntityManager“ yra JPA specifikacijos diegimo standartas, kuris yra tas pats visuose diegimuose. Atvirkščiai, jei norite naudoti Hibernate API, tada atkaklumui valdyti turėtumėte tam tikrą Hibernate sesiją. Tačiau negalėsite pereiti prie naujo tiekėjo, jei nuspręsite naudoti „Session“, nes tai apsiriboja hibernate API.
Beveik visoms įmonių programoms reikia tam tikro būdo, kaip nuolatos saugoti duomenis. Tai būtina verslo programoms, nes reikalinga prieiga prie reliacinių duomenų bazių. Patvarumas yra pagrindinė koncepcija kuriant programas ir yra pats iššūkis, nes reikia hierarchiškai struktūruotus „Java“ objektus nuosekliai sujungti į duomenų bazę tokiu būdu, kuris yra greitas ir efektyvus. Nors atkaklumas jau buvo karšta diskusijų tema „Java“ bendruomenėje, daugelis kūrėjų net nesutiks dėl problemos apimties. Objektinės kalbos kontekste pastovumas reiškia, kad duomenys vis dar prieinami net pasibaigus procesui, kuris juos sukūrė. Yra daugybė būdų, kaip nuolatos saugoti duomenis. „Hibernate“ yra vienas iš tokių projektų, kurio tikslas yra rasti visišką „Java“ išsilaikymo problemos sprendimą, o JPA - tai nuolatinių duomenų ir objektų-santykinių žemėlapių tvarkymo specifikacija..