Преимущества именованных запросов в спящем режиме? - PullRequest
29 голосов
/ 14 октября 2011

Я использую hibernate и хотел использовать именованные запросы.но я не знаю, хорошее ли это решение или нет?Пожалуйста, предоставьте мне преимущества именованных запросов.

Когда именованные запросы компилируются?мы можем напрямую изменить именованный запрос в файле hbm, который развернут на сервере приложений?

Пожалуйста, помогите мне.

Спасибо!

Ответы [ 2 ]

36 голосов
/ 14 октября 2011

Именованные запросы компилируются, когда создается экземпляр SessionFactory (так, по сути, когда ваше приложение запускается).

Очевидное преимущество , следовательно, состоит в том, что все ваши именованные запросы проверяются в это время, а не дают сбой при выполнении. Другое преимущество состоит в том, что они легки (-) - для поддержки - конечно, для сложных запросов.

Недостатком является то, что именованные запросы не настраиваются во время выполнения - вы можете, конечно, определять / предоставлять параметры, но помимо того, что вы определили, вы получить; Вы даже не можете изменить сортировку. Другим недостатком является то, что вы не сможете изменить именованный запрос на работающем сервере приложений без перезагрузки SessionFactory .

22 голосов
/ 15 октября 2011

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

  • скомпилировано и проверено во время запуска приложения
  • проще в обслуживании, чем строковые литералы, встроенные в ваш код
  • HQL и нативные SQL-запросы можно использовать и заменять без изменения кода (нет необходимости повторной компиляции кода)

Недостатки

  • статические
  • Отображение набора результатов с собственными SQL-запросами иногда громоздко

Итак, я думаю, что вы определенно должны предпочесть именованные запросы строковым литералам в вашем коде.Когда вам нужно какое-то динамическое создание запроса во время выполнения, вы должны взглянуть на Hibernate Criteria API .Критерии гибернации не всегда просты и интуитивно понятны в использовании, но вы обязательно должны использовать их вместо генерации строк запроса во время выполнения.

HTH

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...