Выбор ответа Junior Spring Data JPA спрашивают часто обновлено

Откуда реализация репозитория

Вопрос

Вы объявили interface OrderRepository extends JpaRepository<Order, Long> без реализации. Откуда она берётся?

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

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

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

Коротко

Правильный ответ: Spring Data создаёт прокси, делегирующий в SimpleJpaRepository. При старте Spring Data находит интерфейсы-репозитории и для каждого создаёт прокси.

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

  1. Spring Data создаёт прокси, делегирующий в SimpleJpaRepositoryправильный ответ
  2. Hibernate генерирует класс-реализацию репозитория при компиляции проекта
  3. Реализацию нужно написать вручную, иначе старт упадёт
  4. Её генерирует Lombok по аннотациям на интерфейсе

Разбор

При старте Spring Data находит интерфейсы-репозитории и для каждого создаёт прокси. Стандартные методы выполняет SimpleJpaRepository, производные (findByStatus) разбираются в запросы, @Query выполняются как есть. Генерации кода при компиляции нет (в отличие, например, от MapStruct). Lombok к этому отношения не имеет.

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

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