Какой Fetch type по умолчанию?

Ответ

Для коллекций (@OneToMany, @ManyToMany) — Lazy. Для скалярных связей (@OneToOne, @ManyToOne) — Eager. Eager по умолчанию для @ManyToOne — частая ловушка: при загрузке Order сразу подтянется User, что провоцирует проблему N+1.

Разбор: Спецификация JPA фиксирует: to-many связи (@OneToMany, @ManyToMany) — LAZY, а to-one (@ManyToOne, @OneToOne) — EAGER по умолчанию. Ловушка именно в @ManyToOne: его Eager незаметно тянет связанную сущность и провоцирует N+1. Варианты "всё Lazy", "всё Eager" и "зависит от провайдера" противоречат стандарту, который обязателен для любой JPA-реализации.

Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.

Заказать гайд Пройти тест
новые гайды и свежие вопросы с собесов — первыми в Telegram Смотреть гайды Подписаться