JPA vs Hibernate
Téměř všechny podnikové aplikace musí pravidelně přistupovat k relačním databázím. Problémem dřívějších technologií (jako je JDBC) byl však nesoulad impedance (rozdíl mezi objektově orientovanými a relačními technologiemi). Řešení tohoto problému bylo představeno zavedením abstraktní vrstvy nazvané Persistence layer, která zapouzdřuje přístup k databázi z obchodní logiky. JPA (Java Persistence API) je framework určený pro správu relačních dat (pomocí perzistentní vrstvy) v Java aplikacích. V komunitě vývojářů Java se používá mnoho implementací JPA od výrobců. Hibernate je nejoblíbenější implementací JPA (DataNucleus, EclipseLink a OpenJPA jsou některé další). Nejnovější verze JPA (JPA 2.0) je plně podporována 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 aktuální verze je JPA 2.0, která byla vydána 10. prosince 2009. JPA nahradil EJB 2.0 a EJB 1.1 entity beans (které byly těžce kritizovány za svou vysokou váhu komunitou vývojářů Java). Ačkoli entity beans (v EJB) poskytovaly objekty persistence, mnoho vývojářů bylo zvyklých místo toho využívat relativně lehké objekty nabízené DAO (Data Access Objects) a dalšími podobnými frameworky. Výsledkem bylo zavedení JPA, které zachytilo mnoho úhledných funkcí výše uvedených rámců.
Perzistence popsaná v JPA pokrývá API (definované v javax.persistence), JPQL (Java Platform, Enterprise Edition) a metadata vyžadovaná pro relační objekty. Stav entity perzistence je obvykle uložen v tabulce. Instance entity odpovídají řádkům tabulky relační databáze. Metadata se používají k vyjádření vztahů mezi entitami. Pro specifikaci metadat ve třídách entit se používají anotace nebo samostatné soubory deskriptorů XML (nasazené s aplikací). JPQL, který je podobný SQL dotazům, se používá k dotazování uložených entit.
Co je Hibernace?
Hibernate je framework, který lze použít pro objektově-relační mapování určené pro programovací jazyk Java. Konkrétně se jedná o knihovnu ORM (object-relational mapping), 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 Java třídami a tabulkami v relačních databázích, také mezi datovými typy Java a SQL. Hibernate lze také použít pro dotazování a načítání dat generováním volání SQL. Programátor je tak zbaven ruční manipulace s výslednými sadami a převodů objektů. Hibernate je vydán jako bezplatný a open source framework distribuovaný pod licencí GNU. Implementace pro JPA API je poskytována v Hibernate 3.2 a novějších verzích. Gavin King je zakladatel 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 frameworků, 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 Hibernate. Nejnovější verze JPA (JPA 2.0) je plně podporována Hibernate 3.5. JPA má výhodu v tom, že má standardizované rozhraní, takže ho vývojářská komunita bude znát lépe než Hibernate. Na druhou stranu lze nativní rozhraní Hibernate API považovat za výkonnější, protože jejich funkce jsou nadmnožinou funkcí JPA.