Hibernate позволяет выполнять следующие виды запросов:
-
HQL (Hibernate Query Language)
- Объектно-ориентированный язык запросов, похожий на SQL.
- Работает с именами классов и свойств сущностей, а не с таблицами и столбцами БД.
- Кросс-СУБД.
java
-
JPA Criteria API
- Программный способ построения запросов через API, а не строки.
- Типобезопасный, позволяет выявлять ошибки запросов на этапе компиляции.
- Часть спецификации JPA.
java
-
Native SQL
- Позволяет выполнять нативные SQL-запросы напрямую к базе данных.
- Полезно для использования специфичных для БД функций или для оптимизации сложных запросов.
java
-
Named Queries (HQL или Native SQL)
- Предопределенные запросы, определенные в метаданных (аннотации или XML).
- Упрощают повторное использование запросов и повышают читаемость кода.
java
В зависимости от задачи и требуемой гибкости выбирается наиболее подходящий способ выполнения запроса. HQL и Criteria API являются предпочтительными, так как они работают на уровне сущностей и более кросс-СУБД. Native SQL используется при необходимости выполнения специфичных для БД операций или для оптимизации.