Выбор ответа Middle Hibernate: N+1, lazy, кеш спрашивают часто обновлено
Тип загрузки по умолчанию
Вопрос
Какие связи в JPA загружаются жадно (EAGER) по умолчанию?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: @ManyToOne и @OneToOne. По спецификации JPA связи «к одному» по умолчанию EAGER, а коллекции LAZY.
Варианты ответа
@OneToManyи@ManyToMany@ManyToOneи@OneToOneправильный ответ- Все связи без исключения
- Никакие: всё LAZY
Разбор
По спецификации JPA связи «к одному» по умолчанию EAGER, а коллекции LAZY. EAGER @ManyToOne незаметно порождает N+1 при загрузке списков через JPQL: Hibernate догружает каждого родителя отдельным запросом. Поэтому рекомендуют явно ставить fetch = FetchType.LAZY на все связи.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.