Встречается на собеседованиях • сегодня
Решал ли проблему N+1
Да, решал. Проблема N+1 возникает при ленивой загрузке связанных сущностей, когда для каждой основной сущности выполняется отдельный запрос к связанным данным.
Решение:
1. **Eager fetching** (не всегда оптимально)
```java
@OneToMany(fetch = FetchType.EAGER)
private List orders;
```
2. **JOIN FETCH в JPQL** (лучший вариант для конкретных запросов)
```java
@Query("SELECT u FROM User u JOIN FETCH u.orders WHERE u.id = :id")
User findUserWithOrders(@Param("id") Long id);
```
3. **EntityGraph** (более гибкий способ)
```java
@EntityGraph(attributePaths = {"orders"})
User findWithOrdersById(Long id);
```
4. **Batch fetching** (оптимизация для ленивой загрузки)
```properties
spring.jpa.properties.hibernate.default_batch_fetch_size=20
```
Важно выбирать подход в зависимости от конкретного сценария использования данных.

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