Выбор ответа Middle Hibernate: N+1, lazy, кеш спрашивают часто обновлено

Тип загрузки по умолчанию

Вопрос

Какие связи в JPA загружаются жадно (EAGER) по умолчанию?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: @ManyToOne и @OneToOne. По спецификации JPA связи «к одному» по умолчанию EAGER, а коллекции LAZY.

Варианты ответа

  1. @OneToMany и @ManyToMany
  2. @ManyToOne и @OneToOneправильный ответ
  3. Все связи без исключения
  4. Никакие: всё LAZY

Разбор

По спецификации JPA связи «к одному» по умолчанию EAGER, а коллекции LAZY. EAGER @ManyToOne незаметно порождает N+1 при загрузке списков через JPQL: Hibernate догружает каждого родителя отдельным запросом. Поэтому рекомендуют явно ставить fetch = FetchType.LAZY на все связи.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.