Java rakendused kasutavad traditsiooniliselt selliseid tehnoloogiaid nagu JDBC (Java Database Connectivity), et pääseda relatsioonilistele andmebaasidele püsivalt andmete säilitamiseks. Peamine probleem oli erinevus objektorienteeritud ja relatsioonitehnoloogiate vahel. JDBC API nõuab arendajatelt SQL-i kõige primitiivsemate CRUD-i (loomise, lugemise, värskendamise ja kustutamise) toimingute käsitsi kodeerimist, millel puudus teisaldatavus.
Lisaks sõltus kood täielikult SQL-ist, mis pole relatsiooniandmebaaside standardne spetsifikatsioon, mis muudaks ülemineku ühest andmebaasist teise keerukamaks. Probleem on selles, et relatsioonitehnoloogia on keskendunud andmetele ja nende suhetele, samas kui objektorienteeritud paradigma ei rõhuta mitte ainult andmeid, vaid ka nendega tehtavaid toiminguid. Selle tulemuseks on objekti-relatsioonilise impedantsi ebakõla. Üks laialt aktsepteeritud lahendus on objekti-relatsiooniline kaardistamine (ORM).
Hibernate on Java programmeerimiskeele ORM (Object / Relational Mapping) raamistik, mis on seotud andmete püsivusega. See on lihtsalt avatud lähtekoodiga objektide-relatsioonide kaardistamise lahendus, mis kaardistab Java klassid relatsiooniandmebaaside andmebaasitabeliteks ja Java-st SQL-i andmetüüpideks. See on GNU litsentsi alusel levitatav kerge ORM-i raamistik, mille eesmärk on pakkuda arendajatele püsivuse saavutamiseks läbipaistvat mehhanismi. See kasutab võimsat päringkeelt, mis sarnaneb SQL-ga ja mida nimetatakse HQL (hibernate Query Language), mis integreerub kiiresti nii olemasolevate kui ka uute rakendustega, muutmata ülejäänud rakendust. Lisaks vastab see täielikult objektorienteeritud mõistetele nagu pärimine, polümorfism ja seotus. Ja mis kõige parem, ei nõua püsivuse saavutamiseks rakendusklassi muutmist.
Java Püsivuse API ehk JPA on spetsifikatsioon, mis kirjeldab objekti-relatsiooni kaardistamise ja püsiva objektihalduse liidest. Lisaks API määratlusele määratleb see reeglite ja juhiste kogumi, kuidas rakendada objektide relatsioonilist kaardistamist ja kuidas muuta need spetsifikatsioonid vastavaks kõigile JPA pakkujatele. Hibernate on JPA juhiste kõige arenenum ja laialdasemalt kasutatav ORM-i rakendamine. JPA pakub lihtsalt objektide / relatsioonide kaardistamise platvormi Java objektide / klasside ja Java-rakenduste relatsiooniandmebaasi andmete haldamiseks. See on liidese spetsifikatsioon, mis on mõeldud JPA juurutamise pakkujatele, et luua ORM-i juurutamise standard, et suunata suure jõudlusega andmetele juurdepääsu kihi nõuded. Hibernate on JPA populaarseim müüja.
JPA, lühendatult Java püsivuse API, on spetsifikatsioon andmetele juurdepääsu saamiseks, nende haldamiseks ja püsimiseks Java-platvormi, Standard Editioni (Java, SE) ja Java Platform, Enterprise Editioni (Java, EE) abil. Hibernate on seevastu rohkem ORM-i rakendamise tööriist, mis vastab JPA spetsifikatsioonidele.
JPA on Java-tüüpi objektide-suhete kaardistamise spetsifikatsioon, mis võimaldab arendajatel andmebaasitoiminguid teha palju kiiremini ja tõhusamalt, võimaldades hõlpsalt suhelda andmebaasidega. See on püsivuse ja objekti relatsioonilise kaardistamise standardne API, pakkudes arendajatele andmesiduvate toimingute jaoks mitmeid eeliseid. Hibernate on avatud lähtekoodiga objektide relatsioonilise kaardistamise tööriist, mis lihtsustab Java-rakenduste arendamist, et muuta andmebaasidega ühendamine palju lihtsamaks kui kunagi varem.
JPA probleemiks on see, et see on lihtsalt spetsifikatsioon, mis ei paku ühtegi rakendusklassi. API on lihtsalt klasside ja meetodite kogum, mille abil andmeid saab püsivalt andmebaasi salvestada, järgides spetsiifilisi reegleid ja eeskirju, mida peavad JPA müüjad järgima. Hibernate on üks paljudest JPA juurutamise pakkujatest, mis juurutab JPA spetsifikatsioone mis tahes keskkonnas, mis toetab JPA-d, sealhulgas Java SE ja Java EE rakendusservereid.
Lisaks sellele, et Hibernate raamistik on kõige populaarsem ühisassamblee juurutamise pakkuja, säilitab ta loomuliku API, et edendada ühilduvust nii tagurpidi kui ka mittestandardsete funktsioonidega. Hibernate sisaldab mitmeid funktsioone, mida Java Püsivuse API ei toeta, näiteks laiendatud identifikaatorite generaatorid, uus kuupäeva ja kellaaja API, korratavad märkused, aurupäringu tulemused, kohandatavad CRUD-avaldused, muutumatud üksused, loomulike ID-de tugi, sõltumatute üksuste ad hoc liitumine , jne.
EntityManager on JPA spetsifikatsioonide rakendamise standard, mis on kõigis rakendustes ühesugune. Vastupidi, kui soovite kasutada hibernate API-d, kasutaksite püsivuse käsitlemiseks Hibernate spetsiifilist seanssi. Kui aga otsustate kasutada seanssi, ei saa te uuele teenusepakkujale üle minna, kuna see on piiratud hibernate API-dega.
Peaaegu kõik ettevõtterakendused vajavad mingil viisil andmete püsivat salvestamist. See on ettevõtte rakenduste jaoks ülioluline, kuna nõutakse juurdepääsu relatsioonilistele andmebaasidele. Püsivus on rakenduste arendamisel põhiline kontseptsioon ja see on juba iseenesest väljakutse, kuna hierarhiliselt struktureeritud Java objektid tuleb andmebaasi seada nii kiirelt kui ka tõhusalt. Kuigi püsivus on Java kogukonnas juba olnud kuum aruteluteema, ei lepi paljud arendajad isegi probleemi ulatuses. Objektorienteeritud keele kontekstis tähendab püsivus, et andmed on endiselt juurdepääsetavad ka pärast seda, kui need loonud protsess on lõppenud. Andmete püsivalt salvestamiseks on palju viise. Hibernate on üks selline projekt, mille eesmärk on leida täielik lahendus Java püsivuse probleemile, samas kui JPA on püsivate andmete ja objekti-seoste kaardistamise spetsifikatsioon..