Встречается на собеседованиях • сегодня
Когда возникает LazyInitializationException в Hibernate
LazyInitializationException возникает, когда пытаешься загрузить лениво загруженную коллекцию или прокси-объект после закрытия сессии Hibernate. Это происходит потому, что Hibernate использует прокси для ленивой загрузки, а без активной сессии загрузка невозможна.
Типичный сценарий:
```java
@Entity
class Order {
@OneToMany(fetch = FetchType.LAZY)
private List- items;
// getters/setters
}
// В коде:
Order order = session.get(Order.class, 1L);
session.close();
order.getItems().size(); // Бросает LazyInitializationException
```
Решения:
1. Открыть сессию перед доступом (не всегда возможно)
2. Использовать `FetchType.EAGER` (не всегда оптимально)
3. Инициализировать коллекцию в рамках сессии: `Hibernate.initialize(order.getItems())`
4. Использовать Open Session in View паттерн
5. Получить данные в одном запросе через JOIN FETCH: `from Order o join fetch o.items where o.id = :id`

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы