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

Какие проблемы возникают при использовании типов инициализации в Hibernate

При использовании типов инициализации в Hibernate могут возникнуть следующие проблемы: 1. **N+1 проблема** - при ленивой загрузке коллекций каждый элемент загружается отдельным запросом. Решение - использовать `JOIN FETCH` или `@BatchSize`. 2. **LazyInitializationException** - попытка доступа к ленивой коллекции после закрытия сессии. Решение - открывать сессию (использовать Open Session in View) или инициализировать коллекции в транзакции. 3. **Перегрузка памяти** - при жадной загрузке (EAGER) больших графов объектов. Решение - использовать ленивую загрузку и загружать данные по мере необходимости. Пример проблемы N+1: ```java @Entity public class User { @OneToMany(fetch = FetchType.LAZY) private List orders; } // В коде: List users = session.createQuery("from User").list(); for (User user : users) { user.getOrders().size(); // Генерирует N+1 запросов } ``` Лучшие практики: - По умолчанию использовать LAZY - Для необходимых связей явно указывать JOIN FETCH в запросах - Использовать DTO или проекции вместо загрузки полных сущностей
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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