Встречается на собеседованиях • сегодня

Какие знаешь способы решения проблем N+1

1. **JOIN FETCH** в JPQL/HQL: ```java @Query("SELECT e FROM Employee e JOIN FETCH e.department") List findAllWithDepartment(); ``` Загружает связанные сущности одним запросом. 2. **EntityGraph**: ```java @EntityGraph(attributePaths = "department") List findAll(); ``` Указывает Hibernate загружать связи сразу. 3. **Batch Fetching**: В аннотации `@BatchSize`: ```java @BatchSize(size = 10) class Department { ... } ``` Загружает связанные сущности партиями. 4. **DTO Projection**: ```java @Query("SELECT new com.example.EmployeeDto(e.id, e.name, d.name) FROM Employee e JOIN e.department d") List findAllAsDto(); ``` Избегает N+1, выбирая только нужные поля. 5. **Second Level Cache**: Кэширует часто запрашиваемые данные, уменьшая обращения к БД. Выбор зависит от контекста: JOIN FETCH для простых связей, EntityGraph для динамического управления, Batch для коллекций, DTO для read-only сценариев.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы