Встречается на собеседованиях • сегодня
Встречался ли с проблемой N+1 в Hibernate
Проблема N+1 возникает, когда Hibernate выполняет дополнительные запросы для лениво загружаемых ассоциаций. Например, при выборке списка сущностей и последующем обращении к их связанным объектам.
**Пример:**
```java
@Entity
class Author {
@OneToMany(mappedBy = "author", fetch = FetchType.LAZY)
List books;
}
// Проблемный код
List authors = entityManager.createQuery("SELECT a FROM Author a").getResultList();
for (Author a : authors) {
a.getBooks().size(); // Для каждого автора выполняется отдельный запрос
}
```
**Решение:**
1. Использовать `JOIN FETCH` в JPQL:
```java
List authors = entityManager
.createQuery("SELECT a FROM Author a JOIN FETCH a.books", Author.class)
.getResultList();
```
2. Использовать `@EntityGraph`
3. Настроить `BatchSize` для пакетной загрузки
Проблема приводит к значительному падению производительности при работе с большими наборами данных.

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