Hibernate. Создание named query или именованых запросов.

Именованый запрос может послужить отличным примером использования специфического запроса, когда обычного объектно-реляционного маппинга недостаточно.
Есть варианты использования hibernate query language прямиком из кода, а можно просто в конфигурационном файле hibernate указать именованый запрос с использованием параметров.
Рассмотрим пример несложного именованого запроса, который будет брать селект из таблицы по определенным параметрам, которые будут передаваться из java кода.
Рассмотрим построчно:
1. Объявление именованого запроса:
Теперь из java кода можно будет получать ссылку на именованый запрос по имени "getObjectsByType".
2. Возвращаемый тип данных:
В данном случае возвращаются только id пользователей, то есть скалярный тип long. Возвращаемых типов может быть много, в зависимости от того, какие колонки выбираются в селекте. Также можно возвращать сущности, спроецированные на классы, об этом подробно расписано в туториалах по хибернейту.
3. Тело запроса удобно помещать в блок CDATA, если xml не проходит валидацию, либо будет использована сериализация xml и, чтобы данные не потерялись, они передаются в таком виде, в каком мы их объявили внутри блока.
4. Сам запрос не должен вызвать проблем с объяснениями, единственное на что стоит обратить внимание, так это на два параметра :
:objId и :types
Это параметры, которые будут подставляться при вызове именованого запроса.
Теперь рассмотрим пример вызова этого запроса:
Для выполнения вышеуказанных действий, необходимо иметь необходимые библиотеки hibernate + отлавливать исключения ( если вы не используете IDE ).
Именованые запросы могут выполнять всевозможные запросы. Все, что можно написать чистым sql, можно сделать и там.
Могут служить альтернативой stored procedure - хранимым процедурам, hibernate query language и составлению запросов на лету через java код.
Удобность использования лежит в использовании декларативного объявления в xml и разделении кода.
В новых версиях hibernate, named queries могут быть объявлены через аннотации, без использования xml.
Материалы, которые могут вас заинтересовать
- Hibernate. Object-oriented mapping. Основы. Пример с использованием HSQLDB
- Java. Object-oriented mapping. Работаем с чистым Hibernate без прямого использования JDBC.
- Java Советы
- Почему локальные вложенные классы имеют доступ только к final переменным?
- Вопрос: Восходящее преобразование и generic
- Играем в компилятор.
- Аргументы методов в Java : pass-by-value or pass-by-reference
- Все о String.intern()
- Если бы водителей принимали на работу так же, как и программистов







BLBYT
ЩИТО?
Отправить комментарий