Выбор ответа Junior Spring Data JPA спрашивают часто обновлено
Откуда реализация репозитория
Вопрос
Вы объявили interface OrderRepository extends JpaRepository<Order, Long> без реализации. Откуда она берётся?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Spring Data создаёт прокси, делегирующий в SimpleJpaRepository. При старте Spring Data находит интерфейсы-репозитории и для каждого создаёт прокси.
Варианты ответа
- Spring Data создаёт прокси, делегирующий в SimpleJpaRepositoryправильный ответ
- Hibernate генерирует класс-реализацию репозитория при компиляции проекта
- Реализацию нужно написать вручную, иначе старт упадёт
- Её генерирует Lombok по аннотациям на интерфейсе
Разбор
При старте Spring Data находит интерфейсы-репозитории и для каждого создаёт прокси. Стандартные методы выполняет SimpleJpaRepository, производные (findByStatus) разбираются в запросы, @Query выполняются как есть. Генерации кода при компиляции нет (в отличие, например, от MapStruct). Lombok к этому отношения не имеет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.