Описание тега lazy-initialization
Ленивая инициализация - это тактика откладывания создания объекта, вычисления значения или какого-либо другого дорогостоящего процесса до первой необходимости.
Обычно это достигается поддержанием флага, указывающего, состоялся ли процесс. Каждый раз, когда вызывается желаемый объект, проверяется флаг. Если он готов, его возвращают. Если нет, он инициализируется на месте.
В случае Hibernate ленивая инициализация выполняется в прокси-сервере (созданном вместо коллекции) с использованием сеанса гибернации, из которого был получен объект. Если доступ к коллекции осуществляется при закрытии исходного сеанса (например, вне@Transactional
scope) создается исключение LazyInitializationException.
Для инициализации коллекции достаточно вызвать size()
или перебрать все элементы.