Встречается на собеседованиях • сегодня
Возможна ли проблема N+1, если установлена EAGER
Да, проблема N+1 может возникнуть даже при EAGER-загрузке, хотя чаще ассоциируется с LAZY. При EAGER проблема проявляется, когда Hibernate делает отдельные SELECT для каждого дочернего объекта, вместо использования JOIN.
Пример:
```java
@Entity
public class Parent {
@OneToMany(fetch = FetchType.EAGER)
private List children;
}
```
При запросе `em.createQuery("FROM Parent").getResultList()` Hibernate сначала сделает SELECT для всех Parent, затем отдельные SELECT для каждого списка Child. Решение - использовать JOIN FETCH в JPQL:
```java
em.createQuery("SELECT p FROM Parent p JOIN FETCH p.children")
```
Ключевое отличие от LAZY: при EAGER проблема возникает сразу при загрузке родительских сущностей, а не при обращении к дочерним.

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