Co je to HQL?

HQL je zkratka pro jazyk hibernačního dotazu. Hibernate je platforma pro připojení tradičních databází k objektově orientovanému jazyku (konkrétně JAVA). Jde o dotazovací jazyk v režimu hibernace, který se podobá jazyku SQL v tradičním RDBMS s výjimkou skutečnosti, že místo tabulek používáme entitu v HQL. Je zapsán v kódu JAVA a různé funkce z knihovny JAVA slouží k převodu HQL na SQL. Lze ji nazvat jako objektově orientovaný jazyk s vyraženými příkazy SQL. Jedná se o flexibilní a uživatelsky přívětivý jazyk s vlastní syntaxí a gramatikou pro načítání, ukládání a aktualizaci informací z databáze. Snižuje nesoulad impedance mezi JAVA a RDBMS.

Proč potřebujeme HQL?

Protože význam JAVA jako jazyka pro platformy, jako je internet, roste, je pro nás důležitější propojit naši aplikaci založenou na JAVA s backend pomocí hibernace. Hibernate místo toho používá jazyk HQL k navázání spojení mezi databází a front-endem.

Potřebujeme HQL, když chceme vybrat některá konkrétní pole a sloupce podle našich požadavků. Metody přijaté dříve nebyly dostatečně účinné, aby se dostaly na tuto úroveň, například načtení sady výsledků nebo sady dat z databáze jako celého záznamu majícího počet řádků a sloupců. Tento přístup nedává flexibilitu pro zúžení vyhledávání a činí aplikaci těžkou a pomalou. Tento přístup používají JDBC Connectors, asp.net a mnoho dalších jazyků. Použití HQL snižuje tuto časovou mezeru a poskytuje konkrétní výsledky. Proto je důležitější použít v prostředí v reálném čase, kde je JAVA zapojena do front-endu.

Jak HQL funguje?

HQL je formát souboru XML, který propojuje java od front-endu k databázi na back-endu. SQL dotazy, které přímo spouštíme v databázi pomocí SQL dotazů, lze zapsat také do hql. HQL má svou vlastní syntaxi, do které můžeme napsat dotaz a poté se tento dotaz převede na příkazy SQL, kterým databáze může rozumět. Toto je psáno v jazyce Java, aby se snížil nesoulad impedance.

HQL je jazyk nerozlišující velká a malá písmena, kromě názvu tříd a entit. Například: org.hibernate.eg.test se nerovná org.hibernate.eg.Test, protože „test“ a „test“ jsou dvě různé entity v HQL.

Poznámka: SQL můžeme použít v HQL dotazech přímo pomocí nativního kódu.

Výhody HQL

Existuje několik výhod HQL jako jazyka:

  1. Kodér nemá povinnost se učit jazyk SQL.
  2. HQL je objektově orientovaný a jeho výkon je dobrý, když propojíme naši front-end aplikaci s backendem.
  3. HQL má vyrovnávací paměť a tím zvyšuje rychlost.
  4. HQL podporuje populární vlastnosti konceptů OOP, jako je polymorfismus, dědičnost a asociace.

Syntaxe spolu s příklady dotazů HQL

Některé jednoduché dotazy v režimu spánku vypadají takto:

Klauzula FROM:

From eg.Test or From Test.

Toto prohlášení vrátí všechny instance třídy. V tomto případě je to Test. Můžeme také vytvořit alias pro např .: Z testu jako test. Tady „test“ je alias Testu. Tento alias pak můžete použít později místo třídy.

Pří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 příkaz se používá, když chceme vytvořit aliasy pro hlavní třídy HQL. Toto je užitečná technika v případě, že máme dlouhé dotazy. Můžeme jednoduše přiřadit dotaz alias a pak použít tento alias pro další zpracování dat. Aliasing lze provést i bez klíčového slova AS. Například: Z testu T.

Pří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 ustanovení se používá, když prohledáváme konkrétní data v databázové tabulce. Pokud tedy hledáme konkrétní záznam na základě testovacího kódu, který máme, pak se v dotazu použije tato klauzule. Pomůže to při zúžení kritéria vyhledávání. Dáme-li primární klíč f v tabulce, kde klauzule, pak bychom měli vidět výrazné zlepšení rychlosti vyhledávání.

Pří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 ustanovení se používá, pokud chceme vybrat konkrétní sloupec z databázové tabulky. To je jeden ze způsobů, jak zúžit vyhledávací kritérium. Jakýkoli název pole, který uvedeme v klauzuli select, bude vybrán. Je užitečné načíst malé množství dat, pokud k nim máme specifické informace.

Pří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";

Tuto klauzuli v dotazu lze použít k odstranění jednoho nebo více objektů z připojené databázové tabulky. Tímto způsobem lze vymazat jak „přechodné“, tak „trvalé“ objekty. Toto je jednoduchý dotaz pro odstranění libovolného počtu polí nebo tabulek z databáze. To by mělo být používáno opatrně.

Pří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ávěr

HQL je tedy elegantní objektově orientovaný jazyk, který překlenuje propast mezi objektově orientovaným JAVA a systémem správy databází. S nejvyšším podílem na trhu se jazyk hibernace dotazu stává populárním jazykem, na kterém lze pracovat.

Doporučené články

Toto je průvodce HQL. Zde diskutujeme, proč potřebujeme HQL s výhodami, prací a syntaxí spolu s příklady dotazů. Další informace naleznete také v následujících článcích -

  1. Hibernace Framework
  2. Hibernace
  3. Hibernate Interview Otázky
  4. Co je to Java Hibernate?

Kategorie: