Rozdiel medzi JPA a Hibernate

JPA vs režim dlhodobého spánku

Takmer všetky podnikové aplikácie sú povinné na pravidelný prístup k relačným databázam. Problémom, ktorému čelili predchádzajúce technológie (napríklad JDBC), bol nesúlad impedancie (rozdiel medzi objektovo orientovanými a relačnými technológiami). Riešenie tohto problému bolo zavedené zavedením abstraktnej vrstvy s názvom Perzistencia, ktorá zapuzdruje prístup k databáze z obchodnej logiky. JPA (Java Persistence API) je rámec určený na správu relačných údajov (pomocou vrstvy perzistencie) v Java aplikáciách. V komunite vývojárov jazyka Java sa používa veľa implementácií JPA dodávateľov. Hibernate je najobľúbenejšou takou implementáciou JPA (DataNucleus, EclipseLink a OpenJPA sú niektoré ďalšie). Najnovšia verzia JPA (JPA 2.0) je plne podporovaná programom Hibernate 3.5, ktorý bol vydaný v marci 2010.

Čo je JPA?

JPA je rámec pre správu relačných dát pre Java. Môže byť použitý s aplikáciami využívajúcimi JSE (Java Platform, Standard Edition) alebo JEE (Java Platform, Enterprise Edition). Jeho aktuálna verzia je JPA 2.0, ktorá bola vydaná 10. decembra 2009. JPA nahradila fazuľu entít EJB 2.0 a EJB 1.1 (ktoré boli vývojárskou komunitou Java značne kritizované za to, že majú veľkú váhu). Hoci fazule entít (v EJB) poskytovali perzistenčné objekty, mnoho vývojárov bolo použitých na využitie relatívne ľahkých objektov, ktoré ponúka DAO (Data Access Objects) a iné podobné rámce. Výsledkom bolo zavedenie systému JPA, ktorý zachytil mnohé z úhľadných prvkov vyššie uvedených rámcov.

Perzistencia opísaná v JPA pokrýva API (definované v javax.persistence), JPQL (Java Platform, Enterprise Edition) a metaúdaje vyžadované pre relačné objekty. Stav entity perzistencie sa zvyčajne zaznamená do tabuľky. Prípady entity zodpovedajú riadkom tabuľky relačnej databázy. Metadáta sa používajú na vyjadrenie vzťahov medzi entitami. Anotácie alebo samostatné súbory deskriptorov XML (nasadené v aplikácii) sa používajú na špecifikáciu metadát v triedach entít. JPQL, ktorý je podobný dotazom SQL, sa používa na dotazovanie na uložené entity.

Čo je dlhodobý spánok?

Režim dlhodobého spánku je rámec, ktorý možno použiť na objektovo-relačné mapovanie určené pre programovací jazyk Java. Konkrétnejšie je to knižnica ORM (objektovo-relačné mapovanie), ktorá sa môže použiť na mapovanie objektovo-relačného modelu na konvenčný relačný model. Jednoducho povedané, vytvára mapovanie medzi triedami Java a tabuľkami v relačných databázach, tiež medzi dátovými typmi Java a SQL. Režim dlhodobého spánku sa dá tiež použiť na dotazovanie a získavanie údajov generovaním hovorov SQL. Preto je programátor zbavený ručného zaobchádzania s množinami výsledkov a konverziou objektov. Režim dlhodobého spánku sa vydáva ako bezplatný a otvorený zdrojový rámec distribuovaný na základe licencie GNU. Implementácia rozhrania JPA API je uvedená v Hibernate 3.2 a novších verziách. Gavin King je zakladateľom Hibernate.

Aký je rozdiel medzi JPA a Hibernate?

JPA je rámec pre správu relačných dát v Java aplikáciách, zatiaľ čo Hibernate je špecifická implementácia JPA (v ideálnom prípade teda JPA a Hibernate nie je možné priamo porovnávať). Inými slovami, režim Hibernate je jedným z najpopulárnejších rámcov, ktoré implementujú JPA. Hibernate implementuje JPA prostredníctvom knižníc Hibernate Annotation a EntityManager, ktoré sú implementované nad knižnicami Hibernate Core. EntityManager aj anotácie sledujú životný cyklus v režime dlhodobého spánku. Najnovšia verzia JPA (JPA 2.0) je plne podporovaná programom Hibernate 3.5. Výhodou JPA je, že existuje rozhranie, ktoré je štandardizované, takže vývojárska komunita bude s ním oboznámenejšia ako Hibernate. Na druhej strane natívne režimy Hibernate API možno považovať za výkonnejšie, pretože ich vlastnosti sú supersetom funkcie JPA..