Каков наилучший путь для получения данных из таблицы в спящем режиме с точки зрения производительности? - PullRequest
0 голосов
/ 03 февраля 2012

В спящем режиме мы будем получать данные различными способами, такими как:

  1. .get()
  2. .load()
  3. HQL
  4. NativeSQL
  5. и т. Д.

Но какой из них лучше с точки зрения производительности?

1 Ответ

1 голос
/ 03 февраля 2012

Основные правила для извлечения данных в Hibernate с точки зрения производительности:

  1. Не выбирайте больше данных, чем вам нужно
  2. Получайте данные, которые вам нужны, с минимальным количеством запросов
  3. Убедитесь, что СУБД генерирует оптимальные планы запросов для ваших запросов

Следование этим правилам требует разных подходов в разных ситуациях.Например:

  • Используйте get() для извлечения одного объекта по его идентификатору.Сконфигурируйте типы выборки его отношений (ленивый / нетерпеливый) для достижения оптимального баланса между правилами 1 и 2.

  • Иногда вам нужно получить ссылку на объект, но не нужноПринеси это.Используйте load() в этом случае, чтобы избежать выборки ненужных данных.

  • Используйте HQL-запросы для выборки нескольких объектов.Настройте стратегию выборки с помощью join fetch для оптимального баланса между правилами 1 и 2.

  • Иногда вам необходимо использовать разные стратегии выборки в разных сценариях, чтобы достичь баланса между правилами 1 и 2,так что настроек типа статической выборки недостаточно.В этом случае используйте HQL-запросы, настроенные для конкретных сценариев, даже при извлечении отдельных объектов.

    Также могут помочь профили выборки, введенные в Hibernate 3.5.

  • Иногда ваша СУБД не можетстроить оптимальные планы запросов для запросов, сгенерированных Hibernate.В этом случае используйте собственный SQL.

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