Spring Data-JPA против JPA: какая разница?

Я немного смущен различием между Spring Data-JPA и JPA. Я знаю о JPA, что это спецификация для сохранения объектов Java в реляционной базе данных с использованием популярной технологии ORM. Другими словами, JPA предоставляет интерфейсы и другие технологии ORM, реализует те интерфейсы, которые известны как поставщик JPA, например, Hibernate.

Теперь что такое Spring Data JPA. Является ли Spring данными JPA добавлено еще несколько функциональных возможностей (интерфейсов) по JPA и все еще указано только или это также поставщик JPA?

Я видел Spring Data JPA работает с репозиториями (слой DAO: если я не ошибаюсь). Итак, я имею в виду, как он отличается от "Spring Data JPA + Hibernate" или только с помощью "Hibernate"?

Ответ 1

Я видел Spring, JPA работает с репозиториями (слой DAO: если я не ошибаюсь). Итак, я имею в виду, как он отличается от "Spring JPA + Hibernate" или только с использованием "Hibernate" напрямую?

Как вы сказали, JPA является спецификацией, а Hibernate является конкретной реализацией этой спецификации (эти реализации обычно называются провайдерами). Используя Hibernate, вы привязываете себя к этому провайдеру, ограничивая вашу свободу при необходимости переключать на другой вариант (например, вы хотите использовать EclipseLink или ObjectDB вместо этого, потому что у Hibernate есть ошибка, которая останавливает процесс разработки).

Цитирование Spring Документация JPA:

Реализация уровня доступа к данным приложения была довольно громоздкой. Слишком большой код шаблона должен был быть написан. Классы домена были анемичными и не были разработаны в реальном объектно-ориентированном или управляемом доменом образом.

Использование обеих этих технологий позволяет разработчикам значительно облегчить сохранение настойчивости на основе богатого домена. Тем не менее количество кода шаблона для реализации репозиториев, особенно, по-прежнему довольно велико. Таким образом, цель абстракции репозитория Spring Data заключается в том, чтобы значительно уменьшить усилия по обеспечению уровня доступа к данным для различных хранилищ сохранения.

Подводя итог, JPA добавляет еще один уровень абстракции, который определяет стандартный проект для поддержки уровня Persistence в контексте Spring. Эти определенные интерфейсы (известные как Spring) предоставляют услуги, которые платформа обрабатывает с помощью JPA для обслуживания результатов. Вы определяете репозиторий таким образом, чтобы Spring мог сканировать проект и найти его:

<repositories base-package="com.acme.repositories" />

Таким образом, вы можете использовать его в контексте контейнера или вне его.

Теперь, что такое Spring, JPA. Является ли Spring, JPA добавила еще несколько функциональных возможностей (интерфейсов) поверх JPA и все еще указана только или является также поставщиком JPA?

Spring Данные JPA предоставляют определение для реализации репозиториев, поддерживаемых под капотом, путем ссылки на спецификацию JPA, используя поставщика, который вы определяете.

Ответ 2

API Java Persistence, иногда называемый JPA, представляет собой инфраструктуру Java, управляющую реляционными данными в приложениях с использованием платформы Java, стандартной версии (JavaSE) и платформы Java, Enterprise Edition (JavaEE).

Настойчивость в этом контексте охватывает три области:

  • Сам API, определенный в пакете javax.persistence.

  • Язык запросов на сохранение Java (JPQL).

  • Объектно-реляционные метаданные.

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

Spring Данные JPA являются частью проекта Spring данных, который упрощает реализацию репозиториев на основе JPA.

Особенности:

  • Сложная поддержка для создания репозиториев на основе Spring и JPA
  • Поддержка предикатов QueryDSL и, следовательно, безопасных запросов JPA для
  • Прозрачный аудит класса домена
  • Поддержка разбивки на страницы, динамическое выполнение запросов, возможность интеграции кода доступа к пользовательским данным
  • Проверка @Query аннотированных запросов во время загрузки::
  • Поддержка преобразования сущности на основе XML на
  • Конфигурация репозитория на основе JavaConfig, введя @EnableJpaRepositories

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

Ответ 3

JPA - это Java Persistence API, который является стандартным API Java для объектно-реляционного сопоставления.

JPA - это только спецификация - вам нужна реализация, чтобы иметь возможность использовать ее. Hibernate - одна из наиболее известных и наиболее используемых реализаций JPA, но есть и другие, такие как EclipseLink JPA.

Spring Framework - это большая структура, которая поможет вам легче писать программное обеспечение корпоративного класса. Он содержит поддержку многих технологий Java, включая JPA.

Структура Spring состоит из набора проектов, а один из этих проектов - Spring Data.

Цель Spring Data - упростить работу с базами данных разных типов - от традиционных реляционных баз данных до баз данных NoSQL. Spring Данные поддерживают JPA через подпроект Spring Data JPA.

Чтобы написать программу, использующую JPA, вам потребуется хотя бы реализация JPA, например, Hibernate.

Если вы используете Spring Framework для своего приложения, скорее всего, вы захотите использовать Spring Data JPA вместе с Hibernate.

Эта ссылка должна помочь лучше понять концепцию:

https://spring.io/blog/2011/02/10/getting-started-with-spring-data-jpa/