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

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