Java aplikacije tradicionalno uporabljajo tehnologije, kot je JDBC (Java Database Connectivity) za dostop do relacijskih baz podatkov, da bi lahko stalno shranjevali podatke. Glavna težava je bila razlika med objektno usmerjenimi in relacijskimi tehnologijami. API JDBC bi od razvijalcev zahteval, da v SQL-u ročno kodirajo najbolj primitivne operacije CRUD (ustvarijo, preberejo, posodobijo in izbrišejo), ki jim primanjkuje prenosljivosti.
Poleg tega je bila koda popolnoma odvisna od SQL, kar ni standardna specifikacija za relacijske baze podatkov, kar bi otežilo prehod iz ene baze podatkov v drugo. Težava je v tem, da je relacijska tehnologija usmerjena v podatke in njihov odnos, medtem ko objektno usmerjena paradigma ne poudarja le podatkov, temveč tudi operacij, ki se na njih izvajajo. Posledica tega je neusklajenost objektno-relacijske impedance. Ena izmed široko sprejetih rešitev je objektno-relacijsko preslikavo (ORM).
Hibernate je sistem ORM (Object / Relational Mapping) za programski jezik Java, ki se ukvarja z obstojem podatkov. Preprosto je odprtokodna objektno-relacijska rešitev preslikave, ki preslika Java razrede v tabele baz podatkov v relacijskih bazah podatkov in od Java do SQL podatkovnih tipov. Gre za lahek okvir ORM, ki se distribuira pod licenco GNU, katerega cilj je razvijalcem zagotoviti pregleden mehanizem za dosego obstojnosti. Uporablja močan poizvedbeni jezik, podoben SQL, imenovan HQL (krajše za Hibernate Query Language), ki se hitro integrira tako z obstoječimi kot novimi aplikacijami, ne da bi spremenil preostali del aplikacije. Poleg tega je popolnoma skladen s objektno usmerjenimi pojmi, kot so dedovanje, polimorfizem in povezanost. In kar je najboljši del: od vas ni treba spreminjati aplikacijskega razreda, da dosežete obstojnost.
Java Persistent API ali JPA je specifikacija, ki opisuje vmesnik za objektno-relacijske preslikave in obstojno upravljanje predmetov. Poleg definicije API določa niz pravil in smernic o tem, kako izvajati objektno relacijsko preslikavo in kako te specifikacije združiti z vsemi ponudniki JPA. Hibernate je najbolj napredna in široko uporabljena ORM smernica JPA. JPA preprosto nudi objektno / relacijsko preslikavno platformo za upravljanje podatkov med Java predmeti / razredi in relacijsko bazo podatkov v aplikacijah Java. Gre za specifikacijo vmesnika, ki je bila zasnovana za izvajalce izvajanja JPA, da ustvarijo standard za izvajanje ORM, da bi ciljali na zahteve visoke ravni dostopa do podatkov. Hibernacija je najbolj priljubljen prodajalec JPA.
JPA, kratica za Java Persistent API, je specifikacija za dostop, upravljanje in obstoj podatkov v aplikacijah z uporabo Java Platform, Standard Edition (Java, SE) in Java Platform, Enterprise Edition (Java, EE). Hibernate je na drugi strani bolj orodje za izvajanje ORM, ki je skladno s specifikacijami JPA.
JPA je specifikacija za objektno-relacijsko preslikavo na Javi, ki razvijalcem omogoča hitrejše in učinkovitejše delovanje baz podatkov, kar omogoča enostavno interakcijo z bazami podatkov. To je standardni API za obstojno in objektno relacijsko preslikavo, ki razvijalcem ponuja številne prednosti za operacije vezave podatkov. Hibernate je odprtokodno orodje za relacijsko preslikavo predmetov, ki poenostavi razvoj aplikacij Java, kar omogoča lažje povezovanje z bazami podatkov kot kdaj koli prej.
Težava pri JPA je, da gre le za specifikacijo, ki ne zagotavlja nobenih razredov izvajanja. API je le zbirka razredov in metod za trajno shranjevanje podatkov v bazo podatkov po določenem naboru pravil in predpisov, ki jih morajo upoštevati prodajalci JPA. Hibernate je eden izmed številnih ponudnikov implementacije JPA, ki izvaja JPA specifikacijo v katerem koli okolju, ki podpira JPA, vključno z aplikacijskimi strežniki Java SE in Java EE.
Hibernate Framework poleg tega, da je najbolj priljubljen ponudnik implementacije JPA, ohrani svoj izvorni API za spodbujanje združljive za nazaj in prilagajanje nestandardnih funkcij. Hibernate ima več funkcij, ki jih ne podpira program Java Persistent API, kot so razširjeni generatorji identifikatorjev, novi API-ji datuma in časa, ponavljajoče pripombe, rezultati poizvedb o pari, prilagodljivi stavki CRUD, nespremenljive osebe, podpora za naravne ID-je, ad hoc pridružitev nepovezanih entitet itd.
EntityManager je standard za izvajanje specifikacij JPA, ki je enak v vseh izvedbah. Če želite uporabiti Hibernate API, bi uporabili specifično sejo za mirovanje za obstojnost. Vendar pa ne boste mogli seliti na novega prodajalca, če se odločite za sejo, ker je omejena na hibernacijske API-je.
Skoraj vse poslovne aplikacije potrebujejo nek način za trajno shranjevanje podatkov. Za poslovne aplikacije je ključnega pomena zaradi potrebnega dostopa do relacijskih baz podatkov. Vztrajanje je temeljni koncept pri razvoju aplikacij in je sam po sebi izziv, ker je treba hierarhično strukturirane Java-predmete v serijo pretvoriti v bazo podatkov na hiter in učinkovit način. Čeprav je vztrajanje že vroča tema razprav v skupnosti Java, se mnogi razvijalci sploh ne strinjajo o obsegu težave. V kontekstu objektno usmerjenega jezika obstojnost pomeni, da so podatki še vedno dostopni tudi po koncu postopka, ki ga je ustvaril. Obstaja veliko načinov za trajno shranjevanje podatkov. Hibernate je en tak projekt, katerega cilj je popolna rešitev problema obstojnosti na Javi, medtem ko je JPA specifikacija za upravljanje obstojnih podatkov in objektno-relacijskih preslikav.