Основная причина возникновения исключения LazyInitializationException в Hibernate — попытка доступа к отложенным данным за пределами активной сессии Hibernate. javanexus.com jonasbockstal.dev
Обычно это происходит на другом уровне приложения, например на уровне представления или сервиса, когда сессия Hibernate, использованная для извлечения объекта, уже закрыта. javanexus.com
Некоторые другие возможные причины:
- Использование анти-паттерна Open Session in View. thorben-janssen.com При его применении на уровне представления открывают и закрывают EntityManager или Session Hibernate, а затем вызывают уровень сервиса, который открывает и фиксирует транзакцию базы данных. thorben-janssen.com
- Использование параметра hibernate.enablelazyloadnotrans. thorben-janssen.com Он заставляет Hibernate открывать временную Session, когда нет доступной активной сессии, для инициализации отложенной ассоциации. thorben-janssen.com
- Длительные сессии. javanexus.com Чтобы снизить вероятность возникновения исключения, рекомендуется минимизировать продолжительность сессий Hibernate, получать необходимые данные внутри сессии и не держать её открытой длительное время. javanexus.com