Hibernate предоставляет четыре основных стратегии загрузки для управления тем, как связанные объекты извлекаются из базы данных. Каждая стратегия предлагает разные компромиссы между производительностью и использованием ресурсов.
Join fetching использует OUTER JOIN в одном SELECT-запросе для одновременного извлечения связанных экземпляров или коллекций вместе с родительской сущностью. Этот подход минимизирует количество обращений к базе данных, но может привести к более крупным наборам результатов.
Select fetching выполняет отдельный SELECT-запрос для извлечения связанных сущностей или коллекций. По умолчанию включен lazy="false", что означает, что связи загружаются сразу. Ты можешь явно отключить ленивую загрузку, если нужно для оптимизации производительности.
Subselect fetching использует второй SELECT-запрос, который применяет подзапрос для загрузки связанных коллекций для всех сущностей, полученных в предыдущем запросе. Эта стратегия особенно эффективна, когда нужно загрузить коллекции для нескольких родительских сущностей.
Batch fetching извлекает пакет экземпляров сущностей или коллекций с помощью одного SELECT-запроса, указав список первичных или внешних ключей. Это настоятельно рекомендуется для сценариев select fetching, так как значительно повышает производительность, снижая количество запросов к базе данных.
Выбери подходящую стратегию в зависимости от паттернов запросов, кардинальности связей и требований к производительности.
Join fetching использует OUTER JOIN для получения связанных объектов в одном SELECT-запросе, что минимизирует обращения к базе данных, но может создать более крупные результирующие наборы.
Новый — ещё не проверен сообществом
Вы