Kaj je HQL?

HQL je okrajšava za hibernacijski jezik poizvedb. Hibernate je platforma za povezovanje tradicionalnih baz podatkov z objektno usmerjenim jezikom (natančneje JAVA). To je jezik poizvedovanja v stanju hibernacije podobno SQL v tradicionalnih RDBMS, razen dejstva, da namesto tabel uporabljamo entiteto v HQL-u. Napisan je vdelano v kodo JAVA, različne funkcije iz knjižnice JAVA pa se uporabljajo za pretvorbo HQL v SQL. Lahko ga imenujemo kot objektno orientiran jezik, vtisnjen s stavki poizvedbe SQL. Je prilagodljiv in uporabniku prijazen jezik, ki ima svojo sintakso in slovnico za pridobivanje, shranjevanje in posodabljanje informacij iz baze podatkov. Zmanjša neusklajenost impedance med JAVA in RDBMS.

Zakaj potrebujemo HQL?

Ker se pomen JAVA kot jezika za platforme, kot je internet, povečuje, se nam zdi bolj smiselno povezati našo aplikacijo, ki temelji na JAVA, s pomočjo hibernacije. Hibernate namesto tega uporablja jezik HQL, da vzpostavi povezavo med bazo podatkov in sprednjim delom.

HQL potrebujemo, ko želimo izbrati nekatera določena polja in stolpce glede na naše zahteve. Metode, ki so bile sprejete prej, niso bile dovolj učinkovite, da bi sestavile na to raven, na primer pridobivanje rezultatov ali nabora podatkov iz baze podatkov kot celoten zapis s številom vrstic in stolpcev. Ta pristop ne daje prožnosti za zmanjšanje iskanja in naredi aplikacijo težko in počasno. Ta pristop uporabljajo priključki JDBC, asp.net in številni drugi jeziki. Uporaba HQL zmanjšuje to časovno vrzel in daje posebne rezultate. Zato je primernejša uporaba v realnem času, kjer je JAVA vključena v sprednji del.

Kako deluje HQL?

HQL je oblika datoteke XML, ki povezuje Java s sprednjega dela na bazo podatkov na zadnji strani. Poizvedbe SQL, ki jih sprožimo v bazi podatkov neposredno s sql poizvedbami, lahko zapišemo tudi v hql. HQL ima svojo skladnjo, kamor lahko zapišemo poizvedbo, nato pa se ta poizvedba pretvori v stavke SQL, ki jih lahko razume baza podatkov. Ta je napisana v java jeziku, da se zmanjša neskladje impedance.

HQL je jezik, ki ni odvisen od primerov, razen imena razredov in entitet. Na primer: org.hibernate.eg.test ni enako org.hibernate.eg.Test, ker sta "test" in "Test" dve različni entiteti v HQL-u.

Opomba: SQL lahko v poizvedbah HQL uporabljamo neposredno z izvorno kodo.

Prednosti HQL-a

HQL kot jezik ima več prednosti:

  1. Koder nima nobene obveznosti za učenje jezika SQL.
  2. HQL je objektno orientiran in njegova uspešnost je dobra, če povezujemo našo sprednjo aplikacijo z zaledjem.
  3. HQL ima predpomnilni pomnilnik in s tem izboljša hitrost.
  4. HQL podpira priljubljene funkcije konceptov OOP, kot so polimorfizem, dedovanje in povezovanje.

Sintaksa skupaj s primeri poizvedb HQL

Nekaj ​​preprostih poizvedb v mirovanju izgleda:

OD Klavzula:

From eg.Test or From Test.

Ta izjava bo vrnila vse primerke razreda. V tem primeru gre za Test. Lahko ustvarimo tudi vzdevek za npr .: Iz testa kot preizkusa. Tu je "test" vzdevek Test. Ta vzdevek lahko kasneje uporabite namesto razreda.

Primer # 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.

Ta stavek se uporablja, kadar želimo ustvariti vzdevke za glavne razrede HQL. To je uporabna tehnika, če imamo dolga vprašanja. Poizvedbo lahko preprosto dodelimo vzdevku in jo nato uporabimo za nadaljnje ravnanje s podatki. Zdaj se lahko izvede tudi brez ključne besede AS. Za primer: Iz testa T.

Primer # 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.

Ta klavzula se uporablja, ko iščemo določene podatke v tabeli baze podatkov. Torej, če iščemo določen zapis na podlagi testne kode, ki jo imamo, se ta klavzula uporablja v poizvedbi. To bo pomagalo zožiti iskalno merilo. Če damo primarni ključ f tabeli, kje je klavzula, bi morali opaziti bistveno izboljšanje hitrosti iskanja.

Primer # 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.

Ta klavzula se uporablja, če želimo iz tabele baze podatkov izbrati določen stolpec. To je eden izmed načinov zoženja merila za iskanje. Ne glede na ime polja v izbirni klavzuli navedemo samo tisto, ki bo izbrano. Koristno je pridobiti majhno količino podatkov, če imamo iste podatke.

Primer št. 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";

Ta določba v poizvedbi se lahko uporabi za brisanje enega ali več predmetov iz povezane tabele baze podatkov. Tako „prehodne“ in „obstojne“ predmete lahko na ta način izbrišete. To je enostavna poizvedba, da iz baze izbrišete poljubno število polj ali tabel. To je treba uporabljati previdno.

Primer št. 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);

Zaključek

HQL je eleganten objektno usmerjen jezik, ki premosti vrzel med objektno usmerjenim JAVA in sistemom za upravljanje podatkovnih baz. Z najvišjim tržnim deležem hibernacijski poizvedbeni jezik postaja priljubljen jezik za delo.

Priporočeni članki

To je vodnik za HQL. Tukaj razpravljamo, zakaj potrebujemo HQLwith Advantages, Working in Syntax skupaj s primeri poizvedb. Za več informacij si lahko ogledate tudi naslednje članke -

  1. Hibernacijski okvir
  2. Hibernacijska seja
  3. Hibernativna vprašanja o intervjuju
  4. Kaj je hibernacija Java?