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

Когда возникает 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`
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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