HQL | Вступление

Опубликовано: 8 Июля, 2021

Вступление

Hibernate Query Language (HQL) - это простой в освоении и мощный язык запросов, разработанный как объектно-ориентированное расширение SQL, которое устраняет разрыв между объектно-ориентированными системами и реляционными базами данных. Синтаксис HQL очень похож на синтаксис SQL. он имеет богатый и мощный объектно-ориентированный язык запросов, доступный с Hibernate ORM, который представляет собой метод сопоставления объектов с базами данных. Данные из объектно-ориентированных систем отображаются в реляционные базы данных с помощью схемы на основе SQL.

HQL также можно использовать для извлечения объектов из базы данных через сопоставление O / R, выполнив следующие задачи:

  • Применять ограничения к свойствам объектов
  • Упорядочивайте результаты, перенастроенные запросом, с помощью предложения order by
  • Разбить результаты на страницы
  • Агрегируйте записи, используя группы по и имеющие предложения
  • Использовать объединения
  • Создание пользовательских функций
  • Выполнять подзапросы

Язык запросов Hibernate, разработанный как «минимальное» объектно-ориентированное расширение SQL, обеспечивает элегантный мост между классами Java и таблицами базы данных. Следовательно, необходимо понимать необходимость HQL в текущем сценарии.

Особенности HQL

Запросы HQL нечувствительны к регистру; однако имена классов и свойств Java чувствительны к регистру. HQL используется для выполнения запросов к базе данных. Если HQL используется в приложении для определения запроса к базе данных, инфраструктура Hibernate автоматически генерирует запрос SQL и выполняет его. В отличие от SQL, HQL использует классы и свойства вместо таблиц и столбцов. HQL поддерживает полиморфизм, а также ассоциации, что, в свою очередь, позволяет разработчикам писать запросы, используя меньше кода по сравнению с SQL. Кроме того, HQL поддерживает множество других операторов SQL и агрегатных функций, таких как sum () и max (), а также предложения, такие как group by и order by.

Необходимость HQL

Более выгодно использовать HQL вместо собственного SQ для извлечения данных из баз данных. Ниже приведены некоторые из причин, по которым HQL предпочтительнее SQL:

  • Обеспечивает полную поддержку реляционных операций. SQL-запросы можно представлять в виде объектов в HQL, который использует классы и свойства вместо таблиц и столбцов.
  • Возвращать результаты как объекты. Другими словами, результаты запроса представлены в форме объектов, а не в виде простого текста. Эти объекты можно использовать для управления данными в приложении или их извлечения. Это избавляет от необходимости явно создавать объекты и заполнять данные из набора результатов, полученного при выполнении запроса.
  • Поддерживает полиморфные запросы. Полиморфные запросы возвращают результаты запроса вместе со всеми дочерними объектами (объектами подклассов), если таковые имеются.
  • Легко учиться и использовать. Синтаксис HQL очень похож на синтаксис SQL. Это упрощает изучение и реализацию запросов Hibernate в приложениях.
  • Поддерживает многие расширенные функции по сравнению с SQL, такие как разбиение на страницы, соединение выборки с динамическим профилированием (инициализация ассоциаций или сбор значений с их родительскими объектами может быть выполнена с помощью одного оператора выбора), внутренние / внешние / полные объединения и декартово произведение . Он также поддерживает проекции, агрегацию (max, avg), группировку, упорядочение, подзапросы и вызовы функций SQL.
  • Обеспечивает независимость базы данных. HQL помогает писать независимые от базы данных запросы, которые во время выполнения преобразуются в собственный синтаксис SQL базы данных. Такой подход помогает использовать дополнительные функции, которые предоставляет собственный SQL-запрос.

    Синтаксис HQL

    HQL считается самым мощным языком запросов, разработанным как минимальное объектно-ориентированное расширение SQL. Запросы HQL просты для понимания и используют постоянные имена классов и свойств вместо имен таблиц и столбцов. HQL состоит из следующих элементов.

    • Случаи (ОТ, Выбрать, Где, Сортировать по, Группировать по)
    • Ассоциации и объединения (внутреннее соединение, левое внешнее соединение, правое внешнее соединение, полное соединение)
    • Агрегатные функции (среднее, сумма, минимум, максимум, количество и т. Д.)
    • Выражения (математические операторы, двоичное сравнение, конкатенация строк, скалярная функция SQL и т. Д.)
    • Подзапросы (любые, все, некоторые, в)

    HQL запросы

    Запрос внутри запроса известен как подзапрос и заключен в круглые скобки. Примером подзапроса является подзапрос, в котором предложение select встроено в другое предложение, такое как предложение select, from и where. Подзапрос выполняется перед выполнением основного запроса.

    Например, следующий запрос возвращает элементы, все ставки которых меньше 100.

    from Item item где 100> all (выберите b.amount из item.bids b)

    Чтобы получить товары со ставками больше 100, вы можете использовать следующий запрос:

    from Item item где 100 <all (выберите b.amount из item.bids b)

    Как запустить HQL

    После разработки сервлетов, страниц JSP и файлов конфигурации вы должны сохранить их в соответствующем месте в структуре каталогов HibernateApplication. Создайте файл веб-архива (WAR) и назовите его HibernateApplication.war. Разверните файл HibernateApplication.war на сервере приложений GlassFish V3. После успешного развертывания HibernateApplication выполните следующие действия для запуска приложения: Откройте веб-браузер Internet Explorer и введите следующий URL-адрес:
    http: // локальный: 8080 / HibernateApplication / Myservlet

SQL