Čo je to HQL?

HQL je skratka pre jazyk hibernacie dotazu. Hibernate je platforma na prepojenie tradičných databáz s objektovo orientovaným jazykom (konkrétne JAVA). Je to dopytovací jazyk v hibernáte, ktorý je podobný SQL v tradičnom RDBMS, s výnimkou skutočnosti, že namiesto tabuliek používame entitu v HQL. Je napísaný zabudovaný do kódu JAVA a rôzne funkcie z knižnice JAVA sa používajú na prevod HQL na SQL. Môže sa nazývať ako objektovo orientovaný jazyk so znakmi SQL. Je to flexibilný a ľahko použiteľný jazyk s vlastnou syntaxou a gramatikou na získavanie, ukladanie a aktualizovanie informácií z databázy. Znižuje nesúlad impedancie medzi JAVA a RDBMS.

Prečo potrebujeme HQL?

Pretože význam JAVA ako jazyka pre platformy ako internet rastie, považujeme za dôležitejšie prepojiť našu aplikáciu založenú na JAVA na backend pomocou režimu dlhodobého spánku. Hibernate namiesto toho používa jazyk HQL na vytvorenie spojenia medzi databázou a klientskym rozhraním.

Potrebujeme HQL, keď chceme vybrať niektoré konkrétne polia a stĺpce podľa našich požiadaviek. Metódy prijaté skôr neboli dostatočne účinné na to, aby sa dostali na túto úroveň, napríklad aby sa načítala sada výsledkov alebo sada údajov z databázy ako celý záznam, ktorý má počet riadkov a stĺpcov. Tento prístup nedáva flexibilitu na zúženie vyhľadávania a spôsobuje, že aplikácia je ťažká a pomalá. Tento prístup používajú JDBC Connectors, asp.net a mnoho ďalších jazykov. Použitie HQL znižuje túto časovú medzeru a poskytuje konkrétne výsledky. Preto je relevantnejšie použiť ho v prostredí v reálnom čase, keď je spoločnosť JAVA zapojená do klientskeho rozhrania.

Ako funguje HQL?

HQL je formát súborov XML na prepojenie javy od klientskeho rozhrania k databáze na zadnom serveri. SQL dotazy, ktoré spúšťame priamo v databáze pomocou SQL dotazov, je možné zapisovať aj do hql. HQL má svoju vlastnú syntax, do ktorej môžeme napísať dotaz a potom sa tento dotaz skonvertuje na príkazy SQL, ktorým databáza porozumie. Toto je napísané v jazyku Java, aby sa znížil nesúlad impedancie.

HQL je jazyk, ktorý nerozlišuje veľké a malé písmená, okrem názvu tried a entít. Napríklad: org.hibernate.eg.test sa nerovná org.hibernate.eg.Test od „testu“ a „testu“ sú dve rôzne entity v HQL.

Poznámka: SQL môžeme použiť v HQL dotazoch priamo pomocou natívneho kódu.

Výhody HQL

HQL ako jazyk má niekoľko výhod:

  1. Programátor nemá žiadnu povinnosť naučiť sa jazyk SQL.
  2. HQL je objektovo orientovaný a jeho výkon je dobrý, keď prepojíme našu klientsku aplikáciu s backendom.
  3. HQL má vyrovnávaciu pamäť a tým zvyšuje rýchlosť.
  4. HQL podporuje populárne vlastnosti konceptov OOP, ako je polymorfizmus, dedičnosť a asociácia.

Syntax spolu s príkladmi dotazov HQL

Niektoré jednoduché dotazy v režime dlhodobého spánku vyzerajú takto:

Klauzula FROM:

From eg.Test or From Test.

Toto vyhlásenie vráti všetky inštancie triedy. V tomto prípade je to Test. Môžeme tiež vytvoriť alias napríklad pre: Z testu ako testu. Tu „test“ je alias Testu. Tento alias potom môžete použiť namiesto triedy.

Príklad č. 1

String hqlquery = "FROM Test";
Query q = session.createQuery(hqlquery);
List display = q.list();
AS Clause: From eg.Test AS T or From Test AS T.

Tento príkaz sa používa, keď chceme vytvárať aliasy pre hlavné triedy HQL. Toto je užitočná technika v prípade, že máme dlhé otázky. Dopyt môžeme jednoducho priradiť aliasu a potom ho použiť na ďalšie spracovanie údajov. Aliasing je možné vykonať aj bez AS kľúčového slova. Napríklad: Z testu T.

Príklad č. 2

String hqlquery = "FROM Test AS T";
Query q = session.createQuery(hqlquery);
List display = q.list();
WHERE Clause: From eg.Test T WHERE T.code=102 or From Test T WHERE T.code=102.

Toto ustanovenie sa používa, keď hľadáme konkrétne údaje v databázovej tabuľke. Takže, ak hľadáme konkrétny záznam na základe testovacieho kódu, ktorý máme, potom sa v dotaze použije táto klauzula. Pomôže to pri zúžení kritéria vyhľadávania. Ak dáme primárny kľúč f v tabuľke, v ktorej sa nachádza klauzula, mali by sme vidieť výrazné zlepšenie rýchlosti vyhľadávania.

Príklad č. 3

String hqlquery = "FROM Test T WHERE T.code = 102";
Query q = session.createQuery(hqlquery);
List display = q.list();
SELECT Clause:
From eg. SELECT T.number FROM Test T.

Toto ustanovenie sa používa, ak chceme z tabuľky databázy vybrať konkrétny stĺpec. Toto je jeden zo spôsobov zúženia kritéria vyhľadávania. Bez ohľadu na názov poľa, ktorý uvádzame v klauzuli select, bude vybraté iba to. Je užitočné načítať malé množstvo údajov, ak k nim máme konkrétne informácie.

Príklad č. 4

String hql = "SELECT E.firstName FROM Employee E";
Query query = session.createQuery(hql);
List results = query.list();
DELETE Clause:
String hqlexample = "DELETE FROM Test " +
"WHERE code = : test_code";

Túto klauzulu v dotaze môžete použiť na odstránenie jedného alebo viacerých objektov z pripojenej databázovej tabuľky. Týmto spôsobom je možné vymazať oba „prechodné“ a „trvalé“ objekty. Toto je jednoduchý dotaz na odstránenie ľubovoľného počtu polí alebo tabuliek z databázy. Toto by sa malo používať opatrne.

Príklad č. 5

String hqlquery = "DELETE FROM Test " +
"WHERE code = : test_code";
Query q = session.createQuery(hqlquery);
q.setParameter("test_code", 102);
int display = q.executeUpdate();
System.out.println("Hence the number of rows modified are: " + display);

záver

Preto je HQL elegantný objektovo orientovaný jazyk, ktorý premosťuje priepasť medzi objektovo orientovaným JAVA a systémom správy databáz. S najvyšším podielom na trhu sa jazyk hibernácie na dopyt stáva populárnym jazykom, na ktorom sa dá pracovať.

Odporúčané články

Toto je sprievodca HQL. Tu diskutujeme o tom, prečo potrebujeme HQL s výhodami, prácou a syntaxou spolu s príkladmi dopytov. Ďalšie informácie nájdete aj v nasledujúcich článkoch -

  1. Režim dlhodobého spánku
  2. Režim dlhodobého spánku
  3. Hibernate Interview Otázky
  4. Čo je to Java Hibernate?

Kategórie: