A Hibernate Query Language (HQL) a Hibernate saját, az SQL-hez nagyon hasonló lekérdező nyelve. Az SQL-el szemben azonban teljesen objektumorientált, így olyan lekérdezéseket írhatunk benne, melyekben a táblák és oszlopok helyett osztályneveket és adattagokat használhatunk. A HQL objektum-relációs modellre épül, rendkívül erőteljes, kezeli az öröklődést, a polimorfizmust és az asszociációt.
A Java osztályok és tulajdonságok kivételével a lekérdezések kis- és nagybetű érzéketlenek, tehát a SeLeCT megegyezik a sELEct-el illetve SELECT-tel, de az org.hibernate.eg.FOO nem azonos az org.hibernate.eg.Foo-val.
A HQL használatának előnyei Teljes mértékben támogatja a relációs műveleteket. Lehetővé teszi SQL lekérdezések reprezentálását objektumok formájában. Osztályokat és tulajdonságokat használ táblák és oszlopok helyett.
Az eredményt objektumként szolgáltatja, amit könnyű használni. Ezzel leveszi a vállunkról az objektum létrehozásának és az eredményhalmazban található adatokkal való feltöltésének feladatát.
A HQL teljesen támogatja a polimorfikus lekérdezéseket. Például a következő lekérdezés from Cat as cat nem csak a Cat osztály, hanem annak leszármazottjainak a példányait is visszaadja.
A Hibernate lekérdezéseket könnyű megtanulni, és egyszerűen implementálhatók az alkalmazásokban.
A HQL számos haladó funkciót tartalmaz, mint például az oldalszámozás, fetch join dinamikus profilozással, inner/outer/full join, direkt szorzatok. Továbbá támogatja a projekciót, aggregációt (max, avg) és csoportosítást, rendezést, allekérdezéseket és SQL funkcióhívásokat.
A HQL-ben megírt lekérdezések adatbázis-függetlenek, ha az adatbázis támogatja az ennek alapjául szolgáló funkciót.
HQL szintaxisának megértése Minden HQL a következő elemeket tartalmazhatja: klózok összesítő függvények allekérdezések
HQL klózok from select where order by group by
Összesítő függvények
HQL lekérdezések összesítő függvények eredményét is visszaadhatják. A támogatott függvények a következők: avg(...), sum(...), min(...), max(...) count(*) count(...), count(distinct ...), count(all...)
Aritmetikai operátorok, konkatenáció és SQL függvények is szerepelhetnek a select záradékban. Példák: select cat.weight + sum(kitten.weight) from Cat cat join cat.kittens kitten group by cat.id, cat.weight
select firstName||' '||initial||' '||upper(lastName) from Person
Allekérdezések Az allekérdezés nem más, mint egy lekérdezésbe ágyazott lekérdezés.
Külső hivatkozások Rose India Hibernate Query Language Hibernate Community Documentation Chapter 14. HQL: The Hibernate Query Language
Kategória:Java API-k Kategória:Lekérdezőnyelvek
en:Hibernate Query Language