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