Rozdíl mezi JPA a Hibernate

JPA vs Hibernace

Téměř všechny podnikové aplikace jsou vyžadovány pro pravidelný přístup k relačním databázím. Problémem, kterému čelily dřívější technologie (například JDBC), byl nesoulad impedance (rozdíl mezi objektově orientovanými a relačními technologiemi). Řešení tohoto problému bylo zavedeno zavedením abstraktní vrstvy nazvané Perzistence vrstva, která zapouzdřuje přístup k databázi z obchodní logiky. JPA (Java Persistence API) je rámec určený pro správu relačních dat (pomocí vrstvy perzistence) v aplikacích Java. V komunitě vývojářů Java se používá mnoho implementací JPA dodavatelů. Hibernate je nejoblíbenější taková implementace JPA (DataNucleus, EclipseLink a OpenJPA jsou některé další). Nejnovější verzi JPA (JPA 2.0) plně podporuje Hibernate 3.5, která byla vydána v březnu 2010.

Co je JPA?

JPA je rámec pro správu relačních dat pro Javu. Může být použit s aplikacemi využívajícími JSE (Java Platform, Standard Edition) nebo JEE (Java Platform, Enterprise Edition). Jeho současná verze je JPA 2.0, která byla vydána 10. prosince 2009. JPA nahradila fazole entit EJB 2.0 a EJB 1.1 (které byly těžce kritizovány za to, že byly těžkou váhou vývojářské komunity Java). Ačkoli fazole entit (v EJB) poskytovaly objekty vytrvalosti, mnoho vývojářů bylo použito k využití relativně lehkých objektů nabízených DAO (Data Access Objects) a jinými podobnými rámci. V důsledku toho byl představen JPA a zachytil mnoho úhledných rysů výše zmíněných rámců.

Perzistence popsaná v JPA zahrnuje API (definovaná v javax.persistence), JPQL (Java Platform, Enterprise Edition) a metadata požadovaná pro relační objekty. Stav entity perzistence je obvykle zobrazen v tabulce. Případy entity odpovídají řádkům tabulky relační databáze. Metadata se používají k vyjádření vztahů mezi entitami. Anotace nebo samostatné soubory deskriptorů XML (nasazené v aplikaci) se používají k určení metadat ve třídách entit. JPQL, který je podobný dotazům SQL, se používá k dotazování na uložené entity.

Co je Hibernace?

Hibernace je rámec, který lze použít pro objektově relační mapování určené pro programovací jazyk Java. Konkrétněji jde o knihovnu ORM (objektově relační mapování), kterou lze použít k mapování objektově relačního modelu na konvenční relační model. Jednoduše řečeno, vytváří mapování mezi třídami Java a tabulkami v relačních databázích, také mezi datovými typy Java a SQL. Režim spánku lze také použít pro dotazování a získávání dat generováním volání SQL. Proto je programátor osvobozen od ručního zpracování sad výsledků a převodu objektů. Hibernace je vydána jako bezplatný a otevřený zdrojový rámec distribuovaný na základě licence GNU. Implementace pro rozhraní JPA API je k dispozici v Hibernate 3.2 a novějších verzích. Gavin King je zakladatelem Hibernate.

Jaký je rozdíl mezi JPA a Hibernate?

JPA je rámec pro správu relačních dat v aplikacích Java, zatímco Hibernate je specifická implementace JPA (v ideálním případě tedy nelze JPA a Hibernate přímo porovnávat). Jinými slovy, Hibernate je jedním z nejpopulárnějších rámců, které implementují JPA. Hibernate implementuje JPA prostřednictvím knihoven Hibernate Annotation a EntityManager, které jsou implementovány nad knihovnami Hibernate Core. EntityManager i anotace sledují životní cyklus Hibernace. Nejnovější verzi JPA (JPA 2.0) plně podporuje Hibernate 3.5. Výhodou JPA je, že má standardizované rozhraní, takže vývojářská komunita s ním bude lépe obeznámena než Hibernate. Na druhou stranu lze nativní rozhraní Hibernate API považovat za výkonnější, protože jeho vlastnosti jsou nadřazenou sadou JPA..