A Java alkalmazások hagyományosan használt technológiákat, például a JDBC-t (Java Database Connectivity) használnak a relációs adatbázisok eléréséhez az adatok tartós tárolása érdekében. A fő probléma az objektum-orientált és a relációs technológiák közötti különbség volt. A JDBC API megköveteli a fejlesztőktől, hogy kézileg kódolják a hordozhatóság nélküli SQL műveletek legeredetibb CRUD (létrehozása, olvasása, frissítése és törlése) műveleteit az SQL-ben..
Ezenkívül a kód teljesen SQL-függő volt, ami nem egy standard specifikáció a relációs adatbázisok számára, ami megnehezítené az egyik adatbázisból a másikba való áttérést. A probléma az, hogy a relációs technológia az adatokra és azok kapcsolatára összpontosít, miközben az objektumorientált paradigma nemcsak az adatokat, hanem az azokon végrehajtott műveleteket is hangsúlyozza. Ez az objektum-relációs impedancia eltérést eredményezi. Az egyik széles körben elfogadott megoldás az objektum-relációs leképezés (ORM).
A Hibernált egy ORM (Object / Relational Mapping) keret a Java programozási nyelv számára, amely az adatok megmaradásával foglalkozik. Egyszerűen egy nyílt forrású objektum-relációs leképezési megoldás, amely a Java osztályokat leképezi a relációs adatbázisok adatbázis tábláira és a Java-tól az SQL adattípusokig. Ez egy könnyű ORM keret, amelyet a GNU licenc alapján terjesztnek, amelynek célja, hogy a fejlesztők számára átlátható mechanizmust biztosítson a kitartás eléréséhez. A HQL-hez hasonló, az SQL-hez hasonló, nagyteljesítményű lekérdezési nyelvet használ (rövidítés a Hibernate Query Language-hez), amely gyorsan integrálódik mind a meglévő, mind az új alkalmazásokba, az alkalmazás többi részének megváltoztatása nélkül. Ráadásul teljes mértékben megfelel az objektum-orientált fogalmaknak, mint például az öröklés, a polimorfizmus és az asszociáció. És ami a legjobb, nem igényli az alkalmazási osztály módosítását a kitartás elérése érdekében.
A Java Perzisztencia API (JPA) egy specifikáció, amely leírja az objektum-relációs leképezések és az állandó objektumkezelés felületét. Az API-meghatározáson túl meghatározza az objektum-relációs leképezés megvalósításának szabályait és iránymutatásait, valamint hogy ezeket a specifikációkat összeegyeztethető legyen az összes JPA-szolgáltatóval. A Hibernate a JPA iránymutatások legfejlettebb és legszélesebb körben alkalmazott ORM megvalósítása. A JPA egyszerűen biztosítja az objektum / relációs leképezési platformot a Java objektumok / osztályok és a Java alkalmazások közötti relációs adatbázis közötti adatkezeléshez. Ez egy olyan interfész-specifikáció, amelyet a JPA implementációs gyártók számára terveztek, hogy szabványt hozzanak létre az ORM megvalósításához a nagy teljesítményű adathozzáférési réteg követelményeinek megcélzása érdekében. A hibernált a JPA legnépszerűbb szállítója.
A JPA, rövidítve a Java Perzisztencia API-t, az adatok elérésének, kezelésének és megmaradásának az alkalmazásokban, a Java Platform, a Standard Edition (Java, SE) és a Java Platform, Enterprise Edition (Java, EE) használatával. A hibernált viszont inkább az ORM megvalósításának olyan eszköze, amely megfelel a JPA előírásainak.
A JPA a Java objektum-relációs leképezésének specifikációja, amely lehetővé teszi a fejlesztők számára az adatbázis-műveletek sokkal gyorsabb és hatékonyabb végrehajtását, ezáltal lehetővé téve az adatbázisokkal történő egyszerű interakciót. Ez a perzisztencia és az objektum relációs leképezés standard API-je, amely számos előnyt kínál a fejlesztők számára az adat-összerendelési műveletekhez. A Hibernate egy nyílt forráskódú objektum-relációs leképező eszköz, amely egyszerűsíti a Java alkalmazások fejlesztését, hogy sokkal könnyebbé tegye az adatbázisokhoz való kapcsolódást.
A JPA problémája az, hogy csak egy specifikáció nem tartalmaz végrehajtási osztályokat. Az API csak olyan osztályok és módszerek gyűjteménye, amelyekkel az adatokat kitartóan tárolják az adatbázisban, a JPA gyártók által követendő speciális szabályok és előírások alapján. A Hibernate egyike azon JPA megvalósító szállítóknak, amelyek a JPA specifikációit a JPA-t támogató bármely környezetben megvalósítják, beleértve a Java SE és a Java EE alkalmazáskiszolgálókat.
Amellett, hogy a legnépszerűbb JPA-megvalósító szállító, a Hibernate keretrendszer megtartja natív API-ját a visszamenőleges kompatibilitás előmozdítása és a nem szabványos szolgáltatások befogadása érdekében. A Hibernálás számos olyan funkcióval érkezik, amelyeket a Java Perzisztencia-API nem támogat, például kibővített azonosító-generátorok, új dátum- és idő-API, megismételhető megjegyzések, gőzkeresési eredmények, testreszabható CRUD utasítások, módosíthatatlan entitások, természetes azonosítók támogatása, független entitások ad hoc csatlakozása stb.
Az EntityManager a JPA-specifikációk végrehajtásának szabványa, amely minden megvalósításban azonos. Éppen ellenkezőleg, ha Hibernate API-t akar használni, akkor Hibernált specifikus munkamenetet használna a kitartás kezelésére. Ugyanakkor nem fog átállni egy új szolgáltatóra, ha úgy dönt, hogy a Session alkalmazást használja, mert az hibernált API-kat érinti.
Szinte minden vállalati alkalmazásnak szüksége van valamilyen módon az adatok tartós tárolására. A relációs adatbázisokhoz szükséges hozzáférés miatt elengedhetetlen a vállalati alkalmazásokhoz. A perzisztencia alapvető fogalom az alkalmazás fejlesztésében, és önmagában is kihívás, mivel a hierarchikusan strukturált Java objektumokat gyors és hatékony módon kell adatbázisba sorolni. Noha a kitartás a Java közösségben már forró téma volt a vita témájának, sok fejlesztő még csak nem is ért egyet a probléma terjedelmével. Az objektum-orientált nyelv kontextusában a perzisztencia azt jelenti, hogy az adatok továbbra is hozzáférhetők még az azt létrehozó folyamat befejezése után is. Az adatok tartós tárolására számos módszer létezik. A hibernálás egy ilyen projekt, amelynek célja a Java megmaradásának problémájának teljes megoldása, míg a JPA a perzisztens adatok és az objektum-relációs leképezések kezelésének specifikációja..