Što je HQL?

HQL je kratica za hibernacijski jezik upita. Hibernacija je platforma za povezivanje tradicionalnih baza podataka s objektno orijentiranim jezikom (konkretno JAVA). Jezik upita u stanju hibernacije sličan je SQL-u u tradicionalnom RDBMS-u, osim što umjesto tablica koristimo entitet u HQL-u. Napisana je ugrađeno u JAVA kod, a različite funkcije iz knjižnice JAVA koriste se za pretvorbu HQL-a u SQL. Može se nazvati objektno orijentiranim jezikom s utisnutim izrazima SQL upita. To je fleksibilan i razumljiv jezik koji ima svoju sintaksu i gramatiku za preuzimanje, spremanje, ažuriranje podataka iz baze podataka. Umanjuje neusklađenost impedance između JAVA i RDBMS.

Zašto nam treba HQL?

Kako se važnost JAVA-e kao jezika za platforme poput interneta povećava, smatramo da je relevantnije povezati našu aplikaciju temeljenu na JAVA-i uz pomoć hibernacije. Hibernate umjesto HQL koristi jezik za uspostavljanje veze između baze podataka i sučelja.

HQL nam treba kad želimo odabrati neka određena polja i stupce prema našim zahtjevima. Metode koje su ranije prihvaćene nisu bile dovoljno učinkovite za bušenje na tu razinu, na primjer dohvaćanje skupa rezultata ili skupa podataka iz baze podataka kao cijelog zapisa s brojem redaka i stupaca. Ovaj pristup ne daje fleksibilnost za sužavanje pretraživanja i čini aplikaciju teškom i tromom. Ovaj pristup koriste JDBC Connectors, asp.net i mnogi drugi jezici. Korištenje HQL-a smanjuje ovaj vremenski jaz i daje određene rezultate. Stoga je važnije koristiti se u realnom okruženju u kojem je JAVA uključena u prednji kraj.

Kako funkcionira HQL?

HQL je XML format datoteke za povezivanje Java s prednjeg kraja na stražnju bazu podataka. SQL upiti koje izravno aktiviramo u bazi podataka koristeći sql upite mogu se zapisati i u hql. HQL ima svoju sintaksu u koju možemo napisati upit, a zatim se taj upit pretvara u SQL izjave koje baza podataka može razumjeti. Ovo je napisano na java jeziku kako bi se smanjila neusklađenost impedancije.

HQL je neosjetljiv na velika slova, osim naziva klasa i entiteta. Na primjer: org.hibernate.eg.test nije jednak org.hibernate.eg.Test jer su "test" i "Test" dvije različite cjeline u HQL-u.

Napomena: SQL u HQL upitima možemo koristiti izravno koristeći nativni kod.

Prednosti HQL-a

Postoji nekoliko prednosti HQL-a kao jezika:

  1. Koder nema nikakvu obvezu učiti SQL jezik.
  2. HQL je objektno orijentiran i njegove performanse su dobre kada povežemo prednju aplikaciju s podupiračem.
  3. HQL ima memoriju za keširanje i na taj način poboljšava brzinu.
  4. HQL podržava popularne značajke OOP koncepata poput polimorfizma, nasljeđivanja i povezanosti.

Sintaksa, zajedno s primjerima HQL upita

Nekoliko jednostavnih upita u stanju hibernacije izgledaju kao:

OD klauzule:

From eg.Test or From Test.

Ova izjava vraća sve instance klase. U ovom slučaju to je Test. Također možemo stvoriti pseudonim za npr.: Iz testa kao testa. Ovdje je "test" alias Test. Taj se pseudonim može kasnije koristiti umjesto za klasu.

Primjer 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.

Ova se izjava koristi kada želimo stvoriti aliasa za glavne klase HQL-a. Ovo je korisna tehnika u slučaju da imamo duge upite. Možemo jednostavno dodijeliti upit aliasom i zatim ga koristiti za daljnje postupanje s podacima. Prepoznavanje se može obaviti i bez ključne riječi AS. Na primjer: Iz testa T.

Primjer 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.

Ova odredba koristi se kada pretražujemo određene podatke u tablici baze podataka. Ako ovdje tražimo određeni zapis na temelju ispitnog koda koji imamo, ova se klauzula koristi u upitu. Ovo će pomoći u sužavanju kriterija pretraživanja. Ako tablici dajemo primarni ključ u kojem je klauzula, tada bismo trebali vidjeti značajno poboljšanje brzine pretraživanja.

Primjer 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.

Ova rečenica se koristi ako želimo odabrati određeni stupac iz tablice baze podataka. Ovo je jedan od načina suženja kriterija pretraživanja. Bez obzira na ime polja u samoj klauzuli navedemo samo ono koje će biti odabrano. Korisno je doći do male količine podataka ako na njima imamo određene podatke.

Primjer 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";

Ova rečenica u upitu može se koristiti za brisanje jednog ili više objekata iz povezane tablice baze podataka. Na ovaj se način mogu izbrisati i „prolazni“ i „postojani“ objekti. Ovo je jednostavan upit za brisanje bilo kojeg broja polja ili tablica iz baze podataka. To treba pažljivo koristiti.

Primjer 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čak

Stoga je HQL elegantan objektno orijentirani jezik koji premošćuje jaz između objektno orijentirane JAVA i sustava za upravljanje bazama podataka. Sa najvišim tržišnim udjelom hibernacijski upitni jezik postaje popularni jezik na kojem se može raditi.

Preporučeni članci

Ovo je vodič za HQL. Ovdje smo raspravljali zašto nam treba HQLwith Advantages, Working, and Syntax, zajedno s primjerima upita. Možete također pogledati sljedeće članke da biste saznali više -

  1. Hibernacijski okvir
  2. Hibernacijska sjednica
  3. Pitanja o hibernaciji za intervju
  4. Što je hibernacija Java?

Kategorija: