Hibernate
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 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.
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]- ↑ 6.5 has gone final!, 2024. április 25. (Hozzáférés: 2024. június 10.)