Java aplikace tradičně používaly technologie jako JDBC (Java Database Connectivity) pro přístup k relačním databázím za účelem trvalého ukládání dat. Hlavním problémem byl rozdíl mezi objektově orientovanými a relačními technologiemi. JDBC API by vyžadovalo, aby vývojáři ručně kódovali nejprimitivnější operace CRUD (vytváření, čtení, aktualizace a mazání) v SQL, které postrádaly přenositelnost.
Kromě toho byl kód zcela závislý na SQL, což není standardní specifikace relačních databází, což by ztěžovalo přechod z jedné databáze do druhé. Problém je, že relační technologie je zaměřena na data a jejich vztah, zatímco objektově orientované paradigma klade důraz nejen na data, ale také na operace, které se na nich provádějí. To má za následek nesoulad objektově-relační impedance. Jedno široce přijímané řešení je objektově relační mapování (ORM).
Hibernace je rámec ORM (Object / Relational Mapping) pro programovací jazyk Java, který se týká perzistence dat. Jde jednoduše o open-source objektově-relační mapovací řešení, které mapuje třídy Java do databázových tabulek v relačních databázích az Java na datové typy SQL. Je to lehký rámec ORM distribuovaný na základě licence GNU, jehož cílem je poskytnout vývojářům transparentní mechanismus k dosažení vytrvalosti. Používá výkonný dotazovací jazyk podobný SQL s názvem HQL (zkratka pro Hibernate Query Language), která se rychle integruje do stávajících i nových aplikací beze změny zbývající aplikace. Navíc je plně kompatibilní s objektově orientovanými pojmy, jako je dědičnost, polymorfismus a asociace. A nejlepší část, nevyžaduje, abyste upravili aplikační třídu, abyste dosáhli vytrvalosti.
Rozhraní Java Persistence API nebo JPA je specifikace, která popisuje rozhraní pro objektově relační mapování a správu trvalých objektů. Kromě definice API definuje sadu pravidel a pokynů o tom, jak implementovat relační mapování objektů a jak zajistit, aby tyto specifikace byly kompatibilní se všemi poskytovateli JPA. Hibernace je nejpokrokovější a nejrozšířenější implementace ORM pokynů JPA. JPA jednoduše poskytuje platformu mapování objektů / relací pro správu dat mezi objekty / třídami Java a relační databází v aplikacích Java. Jedná se o specifikaci rozhraní určenou pro dodavatele implementace JPA k vytvoření standardu pro implementaci ORM, aby bylo možné zacílit na požadavky na vysoce výkonnou vrstvu přístupu k datům. Hibernace je nejoblíbenějším dodavatelem JPA.
JPA, zkratka pro Java Persistence API, je specifikace pro přístup, správu a přetrvávání dat v aplikacích využívajících Java Platform, Standard Edition (Java, SE) a Java Platform, Enterprise Edition (Java, EE). Hibernace je naproti tomu spíš nástrojem pro implementaci ORM, který je v souladu se specifikacemi JPA.
JPA je specifikace pro objektově relační mapování v Javě, které vývojářům umožňuje provádět databázové operace mnohem rychleji a efektivně, což umožňuje snadnou interakci s databázemi. Jedná se o standardní API pro mapování perzistence a relačního mapování objektů, které vývojářům poskytuje několik výhod pro operace vázání dat. Hibernate je nástroj pro relační mapování objektů s otevřeným zdrojovým kódem, který zjednodušuje vývoj aplikací Java a usnadňuje připojení k databázím než kdykoli předtím.
Problém s JPA je v tom, že je to pouze specifikace, která neposkytuje žádné třídy implementace. Rozhraní API je pouze soubor tříd a metod pro trvalé ukládání dat do databáze podle konkrétní sady pravidel a předpisů, které mají dodavatelé JPA dodržovat. Hibernate je jedním z mnoha dodavatelů implementace JPA, který implementuje specifikaci JPA v jakémkoli prostředí podporujícím JPA včetně aplikačních serverů Java SE a Java EE..
Kromě toho, že Hibernate framework je nejoblíbenějším dodavatelem implementace JPA, zachovává si své nativní API pro podporu zpětné kompatibility a přizpůsobení nestandardních funkcí. Hibernace přichází s několika funkcemi, které nejsou podporovány rozhraním Java Persistence API, jako jsou generátory rozšířených identifikátorů, nové rozhraní API Date and Time, opakovatelné anotace, výsledky dotazů páry, přizpůsobitelné příkazy CRUD, neměnné entity, podpora přirozených ID, ad hoc spojení nesouvisejících entit , atd.
EntityManager je standard pro implementaci specifikace JPA, který je stejný ve všech implementacích. Naopak, pokud chcete použít rozhraní Hibernate API, pak byste pomocí Hibernate specifické relace zvládli vytrvalost. Nebudete však moci migrovat na nového dodavatele, pokud se rozhodnete používat relaci, protože je omezeno na rozhraní Hibernate API.
Téměř všechny podnikové aplikace potřebují nějaký způsob, jak trvale ukládat data. Pro podnikové aplikace je životně důležité kvůli požadovanému přístupu k relačním databázím. Perzistence je základním konceptem ve vývoji aplikací a je výzvou sama o sobě, protože je třeba serializovat hierarchicky strukturované Java objekty do databáze způsobem, který je rychlý a efektivní. Přestože vytrvalost již byla v komunitě Java horkým tématem diskuse, mnoho vývojářů se ani nedohodne na rozsahu problému. V kontextu objektově orientovaného jazyka perzistence znamená, že data jsou stále přístupná i po skončení procesu, který je vytvořil. Existuje mnoho způsobů, jak trvale ukládat data. Hibernate je jeden takový projekt, jehož cílem je poskytnout kompletní řešení problému vytrvalosti v Javě, zatímco JPA je specifikace pro správu perzistentních dat a objektově relačních mapování..