Hibernate
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.5.0 (stabil verzió, 2024. április 25.)[1] |
Programozási nyelv | Java |
Operációs rendszer | multi-platform (JVM) |
Platform | JVM |
Állapot | Aktív |
Kategória | Objektum-relációs leképezés |
Licenc | GNU 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ésA 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ésA 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ésA 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ésA Hibernate API az org.hibernate
csomag alatt érhető el.
org.hibernate.SessionFactory interfész
szerkesztésSzá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ésEnnek 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- ↑ 6.5 has gone final!, 2024. április 25. (Hozzáférés: 2024. június 10.)