Что такое HQL?

HQL - это сокращение от языка запросов Hibernate. Hibernate - это платформа для соединения традиционных баз данных с объектно-ориентированным языком (в частности, JAVA). Это язык запросов в hibernate, похожий на SQL в традиционных RDBMS, за исключением того факта, что мы используем сущность в HQL вместо таблиц. Он написан встроенным в код JAVA, а различные функции из библиотеки JAVA используются для преобразования HQL в SQL. Его можно назвать объектно-ориентированным языком с тиснением операторов запросов SQL. Это гибкий и удобный язык, имеющий собственный синтаксис и грамматику для извлечения, хранения и обновления информации из базы данных. Это уменьшает несоответствие импеданса между JAVA и RDBMS.

Зачем нам нужен HQL?

Поскольку значение JAVA как языка для таких платформ, как Интернет, возрастает, мы считаем более важным подключить наше приложение на основе JAVA к бэкэнду с помощью hibernate. Вместо этого 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.Test, поскольку «test» и «Test» - это две разные сущности в HQL.

Примечание. Мы можем использовать SQL в запросах HQL напрямую, используя собственный код.

Преимущества HQL

Есть несколько преимуществ HQL как языка:

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

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

Некоторые простые запросы в спящем режиме выглядят так:

ОТ условия:

From eg.Test or From Test.

Этот оператор вернет все экземпляры класса. В данном случае это Тест. Мы также можем создать псевдоним, например: From Test as the 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.

Этот пункт используется, когда мы ищем определенные данные в таблице базы данных. Так что здесь, если мы ищем конкретную запись на основе тестового кода, который у нас есть, то этот пункт используется в запросе. Это поможет сузить критерий поиска. Если мы дадим первичный ключ для таблицы в предложении where, то мы увидим значительное улучшение скорости поиска.

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

Это предложение используется, если мы хотим выбрать определенный столбец из таблицы базы данных. Это один из способов сузить критерий поиска. Какое бы имя поля мы не указали в предложении select, оно будет выбрано. Полезно получить небольшое количество данных, если у нас есть конкретная информация о них.

Пример № 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 и системой управления базами данных. С наибольшей долей рынка язык запросов Hibernate становится популярным языком для работы.

Рекомендуемые статьи

Это руководство по HQL. Здесь мы обсудим, почему нам нужен HQL с преимуществами, работой и синтаксисом вместе с примерами запросов. Вы также можете взглянуть на следующие статьи, чтобы узнать больше -

  1. Hibernate Framework
  2. Hibernate Сессия
  3. Hibernate Интервью Вопросы
  4. Что такое Java Hibernate?