Встречается на собеседованиях • сегодня

Как избежать возникновения ошибки LazyInitializationException

LazyInitializationException возникает при попытке доступа к лениво загруженным коллекциям вне сессии Hibernate. Основные способы избежать:

  1. Инициализация в рамках сессии:
java
Hibernate.initialize(entity.getLazyCollection());
  1. Использование JOIN FETCH в HQL/JPQL:
java
"FROM Entity e JOIN FETCH e.lazyCollection WHERE e.id = :id"
  1. @Transactional на сервисном слое - чтобы сессия оставалась открытой на время всей бизнес-логики.

  2. DTO проекции - вместо работы с сущностями.

  3. Open Session in View (OSIV) - но это антипаттерн, лучше избегать.

Лучшая практика - явно загружать нужные данные в рамках одного запроса, используя JOIN FETCH или EntityGraph.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы