Встречается на собеседованиях • сегодня
Приведи пример проблемы N+1 в Hibernate
Проблема N+1 возникает, когда Hibernate выполняет один запрос для получения основной сущности, а затем N дополнительных запросов для связанных коллекций (ленивая загрузка).
Пример:
```java
@Entity
public class Author {
@Id
@GeneratedValue
private Long id;
@OneToMany(mappedBy = "author", fetch = FetchType.LAZY)
private List books;
// getters/setters
}
@Entity
public class Book {
@Id
@GeneratedValue
private Long id;
@ManyToOne
private Author author;
// getters/setters
}
```
Проблемный код:
```java
List authors = entityManager.createQuery("SELECT a FROM Author a", Author.class)
.getResultList();
// Для каждого автора выполняется отдельный запрос книг
authors.forEach(author -> author.getBooks().size());
```
Решение - использовать JOIN FETCH:
```java
List authors = entityManager.createQuery(
"SELECT DISTINCT a FROM Author a LEFT JOIN FETCH a.books", Author.class)
.getResultList();
```

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