Вы можете использовать FETCH
для настройки производительности вашего приложения. Это одно из ортогональных понятий Hibernate, которое отвечает на вопрос как (стиль выборки) ассоциация извлекается. Существует 4 стиля: select
/ subselect
/ batch
/ join
.
Вторым понятием является , когда (время выборки) оно должно быть выбрано. Вы можете настроить его с помощью одного из 6 свойств, определенных Hibernate, где большинство из 4 свойств: eager
, lazy
, extra lazy
, proxy
. ( hibernate-core )
Спящий режим используется по умолчанию:
- collection : ленивая выборка
- однозначная ассоциация : извлечение ленивых прокси
Регистрация
JOIN
или (LEFT JOIN
) будет только возвращать родительские объекты.
Регистрация присоединения
JOIN FETCH
(или LEFT JOIN FETCH
) соберет все ассоциации вместе с объектом их владельца. Это означает, что коллекция будет извлечена в том же выборе. Это можно показать, включив статистику Hibernate.
(левое / внешнее) извлечение соединения отлично подходит для ассоциаций * ToOne (многие-к-одному или один-к-одному). Он используется с не сумками, но помните о декартовой проблеме, которая может возникнуть, когда количество элементов таблицы велико. Обратите внимание, что стиль извлечения select
в большинстве случаев выполняется быстрее.
Обратите внимание, что меньшее количество операторов select
является синонимом менее циклических переходов между hibernate и базой данных, но не является синонимом лучшей производительности.