Какво е HQL?

HQL е съкращение за хибернатен език на заявките. Hibernate е платформа за свързване на традиционните бази данни с обектно-ориентиран език (по-специално JAVA). Това е езикът на заявките в хибернация е подобен на SQL в традиционните RDBMS с изключение на факта, че използваме образувание в HQL вместо таблици. Той е написан вграден в JAVA код и различни функции от библиотеката JAVA се използват за преобразуване на HQL в SQL. Може да се нарече като обектно-ориентиран език, релефен с SQL заявки за заявки. Това е гъвкав и удобен за потребителя език със собствен синтаксис и граматика за извличане, съхраняване, актуализиране на информация от базата данни. Намалява несъответствието на импеданса между JAVA и RDBMS.

Защо имаме нужда от HQL?

Тъй като значението на JAVA като език за платформи като интернет се увеличава, ние намираме за по-уместно да свържем нашето JAVA базирано приложение с хибернация. Hibernate използва HQL език вместо това, за да установи връзката между базата данни и предния край.

Имаме нужда от HQL, когато искаме да изберем някои конкретни полета и колони според нашите изисквания. Методите, приети по-рано, не бяха достатъчно ефективни, за да пробият до това ниво, например извличане на набора от резултати или набора от данни от базата данни като цял запис с брой редове и колони. Този подход не дава гъвкавост за стесняване на търсенето и прави приложението тежко и мудно. Този подход се използва от JDBC Connectors, asp.net и много други езици. Използването на HQL намалява тази времева разлика и осигурява конкретни резултати. Следователно е по-уместно да се използва в среда в реално време, когато JAVA участва в предния край.

Как работи HQL?

HQL е XML файлов формат за свързване на Java от предния край към базата данни в задния край. SQL заявките, които задействаме в базата данни директно с помощта на sql заявки, могат да бъдат написани и в hql. HQL има свой синтаксис, където можем да напишем заявката и след това тази заявка се преобразува в SQL изрази, които могат да бъдат разбрани от базата данни. Това е написано на Java език, за да се намали несъответствието на импеданса.

HQL е нечувствителен към регистър език, с изключение на името на класове и образувания. Например: org.hibernate.eg.test не е равно на org.hibernate.eg.Тест, тъй като „тестът“ и „Тестът“ са две различни единици в HQL.

Забележка: Можем да използваме SQL в HQL заявки директно, използвайки родния код.

Предимства на HQL

Има няколко предимства на HQL като език:

  1. Кодерът няма никакво задължение да изучава SQL езика.
  2. HQL е обектно-ориентиран и неговата ефективност е добра, когато свържем нашето предно приложение с бекенда.
  3. HQL има кешираща памет и по този начин подобрява скоростта.
  4. HQL поддържа популярни функции на OOP концепции като полиморфизъм, наследяване и асоцииране.

Синтаксис заедно с примери за заявки за HQL

Някои прости запитвания в хибернация изглеждат като:

ОТ клауза:

From eg.Test or From Test.

Това изявление ще върне всички екземпляри от класа. В случая това е Тест. Можем също да създадем псевдоним за напр .: От Test като тест. Тук „тест“ е псевдоним на Test. Този псевдоним може да бъде използван по-късно вместо клас.

Пример №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.

Този израз се използва, когато искаме да създадем псевдоними на основните класове на HQL. Това е полезна техника в случай, че имаме дълги запитвания. Можем просто да зададем заявката на псевдонима и след това да я използваме за по-нататъшна работа с данни. Изплащането може да се извърши и без ключовата дума AS. За пример: От тест Т.

Пример №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.

Тази клауза се използва, когато търсим конкретни данни в таблицата на базата данни. Така че тук, ако търсим конкретен запис въз основа на тестов код, който имаме, тази клауза се използва в заявката. Това ще помогне за стесняване на критерия за търсене. Ако дадем първичен ключ на таблицата, където е клаузата, тогава трябва да видим значително подобрение в скоростта на търсене.

Пример №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.

Тази клауза се използва, ако искаме да изберем определена колона от таблицата на базата данни. Това е един от начините за стесняване на критерия за търсене. Каквото и име на поле да дадем в клаузата за избор само това ще бъде избрано. Полезно е да получите малко количество данни, ако разполагаме с конкретна информация за тях.

Пример №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";

Тази клауза в заявката може да се използва за изтриване на един или повече обекти от свързаната таблица на база данни. И двете „преходни“ и „устойчиви“ обекти могат да бъдат изтрити по този начин. Това е простата заявка за изтриване на произволен брой полета или таблици от базата данни. Това трябва да се използва внимателно.

Пример №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);

заключение

Следователно HQL е елегантен обектно-ориентиран език, който преодолява пропастта между обектно-ориентираната JAVA и системата за управление на база данни. С най-високия пазарен дял хибернативният език за заявки се превръща в популярен език за работа.

Препоръчителни статии

Това е ръководство за HQL. Тук обсъждаме защо се нуждаем от HQL с предимствата, работата и синтаксиса заедно с примери за заявки. Може да разгледате и следните статии, за да научите повече -

  1. Рамка за хибернация
  2. Хибернална сесия
  3. Хибернални въпроси за интервю
  4. Какво е Java в хибернация?