Спящий режим - критерии против именованного запроса
Я пытаюсь сравнитьКритерии гибернации на именованные запросы для производительности. Я знаю, что все зависит от самого запроса, и последнее слово от того, как они профилируются во время выполнения. тем не менее, пытаясь разобраться, что входит в каждый.
я попытался организовать вопрос в двух частях и ищет проверки / исправления в обеих:
PART-1 - как работают Критерии Hibernate и именованные запросы в основном:
Критерии работают по параметрам. Во время выполнения запрос не нуждается в синтаксическом анализе - в нем есть несколько параметров поиска и «представление в форме», таких как упорядочивание результатов, возврат их как прокручиваемых и т. Д. Не читал и не проверял это, но Критерии работают по индексам полей (на основе параметров, установленных на них), чтобы сделать все это быстрее.
Таким образом, преимущество Criteria по сравнению с обычным HQL заключается в скорости выполнения.
Именованные запросы имеют то же преимущество перед HQL - запрос анализируется один раз при запуске. Затем выполняется везде, где это необходимо в приложении.
ЧАСТЬ 2 - сравнивая два:
Итак, на этой картинке
Как Критерии и именованные запросы сравниваются друг с другом?
Критерии хорошо работают для сложных запросов к нескольким таблицам и нескольким параметрам - есть средства для оптимизации и, следовательно, для быстрого выполнения запроса (?)
Именованные запросы имеют преимущество «определить один раз для использования везде» и вполне подходят для «легких» запросов - менее сложные поиски с небольшим количеством параметров, как правило, в одной таблице. даже лучше по частым запросам.
Примечание: видно очень полезноеКритерии гибернации против HQL: что быстрее? среди некоторых других дискуссий.
ТИА.