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

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