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

Ответы (2 шт):
JpaRepository – это интерфейс фреймворка Spring Data предоставляющий набор стандартных методов JPA для работы с БД.
А создаем мы интерфейс для реализации шаблона проектирования DAO, который впринципе является базой в написании фреймворков на Spring, некоторые так же предпочитают слой Repository не DAO, а именно Repository, просто для того что бы структура проекта была более читабельна
Про DAO я рекомендую почитать вот тут, довольно подробное и понятное обьяснение: https://www.baeldung.com/java-dao-pattern
Программирование на уровне interface делает программу более гибкой, так как класс может наследовать сколько угодно interface, так образом мы можем более гибко модифицировать класс и как следствие(объект). Если мы используем абстрактный класс, то класс, который его наследует может принимать только - 1 класс. Создается проблема пирамиды.
