HQL | Вступление
Вступление
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