Что такое ленивая загрузка в Hibernate? - PullRequest
164 голосов
/ 03 февраля 2010

Что такое ленивая загрузка в Java? Я не понимаю процесс. Кто-нибудь может помочь мне понять процесс отложенной загрузки?

Ответы [ 14 ]

0 голосов
/ 03 августа 2017

Удивительно, но ни один из ответов не говорит о том, как это достигается спящим режимом за экранами.

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


1. Инструментарий с байтовым кодом :

Расширяет определение базового класса с помощью hibernate hooks для перехвата всех вызовов этого объекта.

Готово либо во время компиляции, либо во время [загрузки]

1.1 Время компиляции

  • Операция после компиляции

  • В основном плагинами maven / ant

1,2 Время выполнения

  • Если инструментарий во время компиляции не выполняется, он создается во время выполнения Использование таких библиотек, как javassist

2. Доверенные

Объект-сущность, возвращаемый Hibernate, является прокси реального типа.

Смотрите также: Javassist. Какова основная идея и где реальное использование?

0 голосов
/ 12 марта 2015

Ленивая загрузка позволяет вам отложить поиск ассоциации или лучше контролировать стратегию извлечения.

Когда вы используете загрузку EAGER, вы определяете глобальный план выборки, который нельзя переопределить во время запроса, то есть вы ограничены решением, которое вы приняли при разработке вашей модели сущности. Выборка EAGER - это запах кода , потому что стратегия выборки - это политика времени запроса, и она может отличаться в зависимости от бизнес-сценария.

Стратегия извлечения является очень важным аспектом, так как слишком большое извлечение EAGER может вызвать серьезные проблемы с производительностью.

0 голосов
/ 18 августа 2011

Параметр Lazy решает, следует ли загружать дочерние объекты при загрузке родительского объекта. Вам необходимо сделать этот параметр соответствующим файлом отображения гибернации родительского класса. Объекты это правда.

0 голосов
/ 27 мая 2010

Hiberante поддерживает функцию отложенной инициализации как для сущностей, так и для коллекций. Движок Hibernate загружает только те объекты, которые мы запрашиваем, но не другие объекты или коллекции.

lazy = "false" по умолчанию при загрузке упоминается только о дочернем элементе lazy.in true, если родительский объект загружается, не поддерживает дочерний элемент

...