Hibernate je Framework, který je napsaný v jazyce Java. Umožňuje takzvané objektově relační mapování (ORM). Dokáže usnadnit otázku zachování dat objektů po ukončení běhu aplikací. Jedná se o jednu z implementací Java Persistence API (JPA). Původním tvůrcem Hibernate je Gavin King, který následně se svým Hibernate přešel do firmy JBoss. V roce 2006 došlo k jejímu převzetí společností Red Hat, která na vývoj frameworku navázala.

Role Hibernate ve vývoji

Hibernate poskytuje způsob, který umožňuje zachovat stav objektů mezi dvěma spouštěními aplikace. Udržuje tak data takzvaně persistentní. To mu umožňuje ORM, tedy mapování Java objektů na entity uložené v relačních databázích. Při tomto procesu využívá takzvané mapovací soubory, které popisují, jak se mají data z daného objektu transformovat do databáze a naopak i jakým způsobem má dojít k tvorbě objektů z databázových tabulek.

Alternativní způsob, jak je možné mapovat objekty je použití anotace namísto mapovacích souborů. V Hibernate se tedy nakládá s obvyklými business objekty, následně pak mohou být sloupce tabulky napojené přímo na atributy těchto objektů, nebo může dojít k připojení skrze metody get/set a metody hashCode() nebo equals().

Je třeba připomenout, že není možné použít EJB, ale výlučně klasické objekty, takzvané POJO (Plain Old Java Object). Následně, jakmile jsou objekty v databázi uložené, lze se na ně dotazovat za využití jazyka HQL (Hibernate Query Language). Ten je odvozen z SQL a je mu zároveň značně podobný.

Alternativní způsoby mapování

Hibernate může využívat mapování za pomoci mapovacích souborů nebo anotací:

  • Mapovací soubory jsou soubory ve formátu XML, pro každou jednotlivou třídu je jeden soubor, který je typicky umístěn ve stejném balíčku jako daná třída.
  • Anotace je možné použít dvěma různými způsoby. Buďto jsou přímo u daných atributů nebo u jejich getterů.

Výhody použití Hibernate

  • Hibernate je lepší nežli čisté JDBC. Stačí použít Hibernate, který generuje SQL a pak automaticky spouští nutné SQL příkazy. To šetří mnoho vývoje, který by byl potřeba k ruční tvorbě podobného řešení.
  • Mapování doménových objektů k relační databázi. Hibernate mapuje doménové objekty na relační databázi, což umožňuje vývojářům soustředit se spíše na business logiku nežli správu dat v databázi.
  • Vrstvená architektura. Hibernate má vrstvenou architekturu a je možné používat jednotlivé komponenty podle potřeb konkrétní aplikace.
  • JPA provider. Hibernate může fungovat jako JPA provider v aplikacích založených na JPA.
  • Nezávislost na databázi. Hibernate databáze je nezávislá a je možné využít libovolnou databázi.
  • Caching Framework. Existuje mnoho cachovacích frameworků, které fungují s Hibernate. Můžete používat ve své aplikaci kteroukoliv, abyste vylepšili její výkon.
  • Podpora dědičnosti a polymorfismu.
  • Podpora rozličných vztahů. Hibernate podporuje vztahu jedna k jedné, jedna ku n, n ku jedné i n ku m.

Nevýhody použití Hibernate

  • Nutnost naučit se komplikovanější API. Na naučení Hibernate je potřeba relativně hodně času.
  • Debugging. Debugging a optimalizace výkonu mohou být relativně složité činnosti.
  • Pomalejší nežli JDBC. Hibernate je pomalejší nežli čisté JDBC, vzhledem k tomu, že generuje mnoho SQL příkazů.
  • Není vhodné pro zpracování formou Batch. Pro batch zpracování je vhodnější využít čisté JDBC.
  • Není vhodné pro menší projekty. Pro malé projekty, které mají pouze několik tabulek je práce s Hibernate zbytečná.
  • Generuje komplikované dotazy do databáze s mnoha joiny.