Hibernate Query Language

A Wikipédiából, a szabad enciklopédiából

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[szerkesztés]

  • 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[szerkesztés]

Minden HQL a következő elemeket tartalmazhatja:

HQL klózok[szerkesztés]

  • from
  • select
  • where
  • order by
  • group by

Összesítő függvények[szerkesztés]

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[szerkesztés]

Az allekérdezés nem más, mint egy lekérdezésbe ágyazott lekérdezés.

Külső hivatkozások[szerkesztés]