Hibernate - Кэшируется ли полученный SQL-запрос из HQL-запроса системой hibernate? - PullRequest
0 голосов
/ 26 февраля 2011

Hibernate 3.3

Если у меня есть код, который динамически создает hqln-запросы hibernate, такие как

String query = "from Foo where ";
if( beforeDate != null ) then query+=" createdBefore < :before";
session.createQuery(query);

Получает ли полученный sql, который будет выполняться на БД, кеширование SessionManagerтак что, если один и тот же запрос продолжает выполняться, ему не нужно будет каждый раз перекомпилироваться или он будет каждый раз пересматриваться и перестраиваться hibernate?

Я думаю, что для повышения производительности моего кода БДМне придется написать несколько статических именованных запросов в hibernate, чтобы уменьшить накладные расходы при разборе, если они есть.

1 Ответ

0 голосов
/ 26 февраля 2011

SQL не будет кэшироваться, потому что вы каждый раз создаете новый запрос.Вы можете кешировать запрос, но я сомневаюсь, что затраты на синтаксический анализ значительны.

Некоторые вещи для проверки производительности этого запроса:

  • У вас есть подходящий индекс для createdBefore?
  • Являются ли отношения, которые Foo имеют с другими объектами, «уместными», то есть являются ли они ленивыми, если это возможно, и строгими, если это необходимо.Скажем, Foo имеет член, который загружается из таблицы Bar.Если вы делаете отношения ленивыми, вы избегаете объединения, но если затем вы получите доступ к Bar, принадлежащему каждому Foo, вы сделали n больше запросов, и было бы лучше установить lazy="false".
  • Если вы делаете запрос много раз с одним и тем же значением для before, и таблица Foo обновляется только через Hibernate, и она не обновляется чаще, чем запрашивается, а размер наборов результатов равенне слишком большой, вы могли бы использовать кеш запросов

Как всегда в случае любых проблем с производительностью, убедитесь, что вы можете повторять до и после измерений.

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