Я видел Spring, JPA работает с репозиториями (слой DAO: если я не ошибаюсь). Итак, я имею в виду, чем отличается использование Spring JPA + Hibernate или только использование Hibernate напрямую?
Как вы сказали, JPA - это спецификация, а Hibernate - это конкретная реализация этой спецификации (эти реализации обычно называют провайдерами ). Используя Hibernate, вы привязываетесь к этому провайдеру, ограничивая свою свободу переключаться на другие опции, когда это необходимо (например, вы хотите использовать вместо этого EclipseLink или ObjectDB, поскольку в Hibernate есть ошибка, которая останавливает ваш процесс разработки).
Цитирование Spring Data JPA «S документации:
Реализация уровня доступа к данным приложения была довольно громоздкой. Слишком много стандартного кода должно было быть написано. Доменные классы были анемичными и не были разработаны в реальных объектно-ориентированных или управляемых доменами манерах.
Использование обеих этих технологий значительно облегчает жизнь разработчикам в отношении устойчивости богатой модели предметной области. Тем не менее, объем стандартного кода для реализации репозиториев, особенно все еще довольно высок. Таким образом, цель абстракции репозитория Spring Data состоит в том, чтобы значительно сократить усилия по реализации уровней доступа к данным для различных хранилищ данных.
Подводя итог, можно сказать, что в JPA добавлен еще один уровень абстракции, своего рода определение стандартного дизайна для поддержки уровня сохраняемости в контексте Spring. Эти определенные интерфейсы (известные Spring) предоставляют сервисы, которые фреймворк обрабатывает с использованием JPA для обслуживания результатов. Вы определяете хранилище так, чтобы Spring мог сканировать проект и находить его:
<repositories base-package="com.acme.repositories" />
Таким образом, позволяя использовать его в контексте контейнера или вне его.
Теперь что такое весна, JPA. Является ли Spring, JPA добавленным дополнительным функционалом (Интерфейсами) по сравнению с JPA, и все же он указан только или это также поставщик JPA?
Spring Data JPA предоставляет определение для реализации репозиториев, которые поддерживаются под капотом путем ссылки на спецификацию JPA с использованием определяемого вами провайдера.