A Hibernate egy objektum-relációs leképezést (ORM) megvalósító programkönyvtár Java platformra (a Hibernate-nek létezik egy .NET platformra szánt verziója is NHibernate néven). Segítségével osztályokat és a relációs adatbázisok tábláit tudjuk egymásba leképezni, az adatbázisban lévő rekordokat objektumokként kezelhetjük, és az objektumainkat egyszerűen tárolhatjuk állapotmegőrző módon adattáblákban. A Hibernate egy adatlekérdező nyelvet is biztosít (HQL - Hibernate Query Language), melynek segítségével adatbázis-kezelő rendszerek között hordozható lekérdezéseket írhatunk (ugyanakkor támogatja a natív SQL lekérdezések írását is). A HQL lekérdezésekből a Hibernate generálja az alkalmazás alatt lévő adatbázis kezelő rendszernek megfelelően az SQL lekérdezéseket, és megszabadítja a fejlesztőt az eredményhalmazok objektumokká történő konverziójának nehézségeitől. A Hibernate használható önálló Java alkalmazásokban is, ugyanakkor tipikusan Java EE környezetben alkalmazzák.

Hibernate

FejlesztőRed Hat
Legfrissebb stabil kiadás
  • 6.2.6 (stabil verzió, 2023. június 30.)[1]
  • 6.4.4 (stabil verzió, 2024. február 8.)[2]
Programozási nyelvJava
Operációs rendszermulti-platform (JVM)
PlatformJVM
ÁllapotAktív
KategóriaObjektum-relációs leképezés
LicencGNU Lesser General Public License
A Hibernate weboldala

A Hibernate szabad szoftver, a GNU Lesser General Public License alatt érhető el, azaz a programkönyvtár kereskedelmi célú szoftverekben is felhasználható.

Osztályok leképezése adattáblákra szerkesztés

A leképezés az osztályok és az adattáblák között XML fájlok vagy annotációk segítségével történik. Ezen metainformációk segítségével a Hibernate létre is tudja hozni az adatbázisban a megfelelő táblákat. Lehetőség van egy-a-többhöz és több-az-egyhez típusú kapcsolatok leképezésére is. A Hibernate a fejlesztő számára transzparens módon biztosítja a POJO-k (Plain Old Java Object) perzisztenciáját. Az egyetlen fontos követelmény, hogy az osztálynak rendelkeznie kell egy argumentum nélküli konstruktorral, valamint ajánlott, hogy felüldefiniáljuk az equals() és hashCode() metódusokat. A táblák közötti egy-a-többhöz kapcsolat Hibernate entitásban tipikusan valamilyen kollekció (Set vagy List) segítségével képeződik le, megadható, hogy ezek a kollekciók lusta (lazy) vagy mohó (eager) módon töltődjenek be. A lusta betöltés (lazy loading) esetén a kollekció tartalma csak akkor inicializálódik (tehát akkor fut le a benne lévő objektumoknak megfelelő rekordokat beolvasó lekérdezés), amikor először hivatkozunk rá, a mohó betöltésnél pedig azonnal a kollekciót tartalmazó objektum betöltésekor. Szintén megadható, hogy a szülő objektumon végzett műveletek esetén a hozzá kapcsolódó objektumokkal mi történjen. Például, ha van egy szülő objektumunk, a Megrendelés, és ez tartalmaz néhány MegrendelésElem objektumot, akkor lehetőség van arra, hogy a Megrendelés mentése illetve törlése esetén a benne lévő MegrendelésElem objektumok is mentődjenek illetve törlődjenek. Létezik beépített „dirty check”, azaz a Hibernate csak azokat az objektumokat írja vissza az adatbázisba, amelyek valóban változtak, megakadályozva ezzel a felesleges beszúrásokat.

Története szerkesztés

A Hibernate fejlesztését Gavin King kezdte el 2001-ben, hogy alternatívát hozzon létre az EJB2 által propagált entity bean-ekhez. Azt a célt tűzte ki maga elé, hogy jobb és egyszerűbb módot biztosítson a perzisztencia kezelésére, mint az EJB2 által kínált lehetőség. 2003 elején a Hibernate-t fejlesztő csapat kiadta a Hibernate 2-t, amely jelentős javításokat tartalmazott az első kiadáshoz képest. A JBoss később alkalmazta a vezető fejlesztőket, és velük együtt dolgozva támogatta a Hibernate fejlesztését. 2010-től kezdve a Hibernate a 3.x verziók alatt érhető el. A 3.5-ös verzió óta a Java Persistence API 2.0-s verziójának elismert implementációja.

HQL szerkesztés

A Hibernate Query Language teszi lehetővé lekérdezések írását és futtatását. Technikailag a HQL-t a Hibernate Criteria API értelmezi, majd azt AST segítségével az aktuális SQL dialektusra fordítva végrehajtja.

Hibernate API szerkesztés

A Hibernate API az org.hibernate csomag alatt érhető el.

org.hibernate.SessionFactory interfész szerkesztés

Szálbiztos és immutable objektum Session-ök létrehozására. Az alkalmazások az ezt az interfészt implementáló osztály egyetlen példányát használják.

org.hibernate.Session interfész szerkesztés

Ennek az interfésznek az implementációi biztosítják az entitásokon való műveletek végzését. Ezek a műveletek magukban foglalják többek között a perzisztencia állapotok (persistence state: transient, persisted, detached) menedzselését, az adatok beolvasását/kiírását az adatbázisba, valamint a tranzakciók határainak megjelölését. A Session objektum nem szálbiztos, csak egy kliens használhatja egyszerre.

További információk szerkesztés

  1. Hibernate ORM 6.2.6.Final released, 2023. június 30.
  2. Release 6.4.4, 2024. február 8. (Hozzáférés: 2024. február 20.)