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

Что такое N+1 SELECT проблема

N+1 SELECT проблема возникает, когда ORM (например, Hibernate) выполняет один запрос для получения основного набора данных, а затем делает дополнительные запросы для каждой связанной сущности. Это приводит к неоптимальной работе с БД. Пример с Hibernate: ```java @Entity class Author { @Id Long id; @OneToMany(mappedBy = "author") List books; } @Entity class Book { @Id Long id; @ManyToOne Author author; } // Проблемный код: List authors = entityManager.createQuery("SELECT a FROM Author a", Author.class).getResultList(); // Для каждого автора выполняется отдельный запрос книг: authors.forEach(a -> a.getBooks().size()); // N+1 запросов ``` Решение: 1. Использовать JOIN FETCH: ```java List authors = entityManager.createQuery( "SELECT DISTINCT a FROM Author a LEFT JOIN FETCH a.books", Author.class).getResultList(); ``` 2. Использовать @BatchSize для ленивой загрузки 3. Настроить EntityGraph
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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