Зачем мы создаем интерфейс-репозиторий в Spring проэктах?

Зачем мы всегда создаем интерфейс-репозитории, которые ничего не делают, кроме как наследуются от JPARepository? К чему эта лишняя прослойка, если в сервисе мы с таким же успехом могли бы просто обращаться напрямую к JPARepository? Вообще впринципе с интерфейсами у меня туго, сколько учу джаву, а для чего они нужны так и не понял.. Может кто посоветует источник, который доходчиво обьяснил бы мне, тугодуму. =( введите сюда описание изображения

введите сюда описание изображения


Ответы (2 шт):

Автор решения: Константин Николаевич Бояр II

JpaRepository – это интерфейс фреймворка Spring Data предоставляющий набор стандартных методов JPA для работы с БД.

А создаем мы интерфейс для реализации шаблона проектирования DAO, который впринципе является базой в написании фреймворков на Spring, некоторые так же предпочитают слой Repository не DAO, а именно Repository, просто для того что бы структура проекта была более читабельна

Про DAO я рекомендую почитать вот тут, довольно подробное и понятное обьяснение: https://www.baeldung.com/java-dao-pattern

→ Ссылка
Автор решения: GameForYouOnline

Программирование на уровне interface делает программу более гибкой, так как класс может наследовать сколько угодно interface, так образом мы можем более гибко модифицировать класс и как следствие(объект). Если мы используем абстрактный класс, то класс, который его наследует может принимать только - 1 класс. Создается проблема пирамиды.

→ Ссылка