Що таке HQL?

HQL - це абревіатура для сплячої мови запитів. Hibernate - це платформа для підключення традиційних баз даних до об'єктно-орієнтованої мови (зокрема JAVA). Мова запитів у сплячому режимі схожа на SQL у традиційних RDBMS за винятком того факту, що ми використовуємо сутність у HQL замість таблиць. Він написаний вбудованим у код JAVA, а різні функції з бібліотеки JAVA використовуються для перетворення HQL у SQL. Його можна назвати як об'єктно-орієнтовану мову, оброблену операторами SQL запитів. Це гнучка і зручна для користувача мова, яка має свій синтаксис і граматику для отримання, зберігання, оновлення інформації з бази даних. Це зменшує невідповідність імпедансу між JAVA та RDBMS.

Для чого нам потрібен HQL?

Оскільки важливість JAVA як мови для таких платформ, як Інтернет, зростає, ми вважаємо більш актуальним підключення нашого додатку на базі JAVA заднім числом за допомогою сплячого режиму. Hibernate використовує мову HQL замість цього, щоб встановити зв'язок між базою даних та "front-end".

Нам потрібен HQL, коли ми хочемо вибрати певні поля та стовпці відповідно до наших вимог. Методи, прийняті раніше, були недостатньо ефективними для того, щоб перейти до цього рівня, наприклад, отримання набору результатів або набору даних з бази даних як цілого запису, що має кількість рядків і стовпців. Такий підхід не дає гнучкості звузити пошук і робить додаток важким і млявим. Цей підхід використовується роз'ємами JDBC, 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. Цей псевдонім може бути використаний пізніше замість класу.

Приклад №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.

Цей пункт використовується під час пошуку певних даних у таблиці бази даних. Отже, якщо ми шукаємо певний запис на основі тестового коду, який у нас є, це застереження використовується в запиті. Це допоможе звузити критерій пошуку. Якщо ми дамо первинний ключ f таблиці, де пункт, то ми повинні побачити значне поліпшення швидкості пошуку.

Приклад №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?