Разница между spring -data-jpa и spring -boot-starter-data-jpa

Это не лучший вопрос, но я заметил, что есть 2 Spring JPA для загрузки Spring. Насколько они разные. В настоящее время я пытаюсь настроить проект SpringBoot 1.5.3 вместе с спящим режимом. Я помню, что раньше у меня была установка Springboot с JPA с spring -boot-starter-data-jpa.

Большинство онлайн-примеров, которые я видел, а также starter.spring.io предоставляет ниже зависимость для Spring jpa.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

Но в одном из существующих проектов я столкнулся с spring -data-jpa

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-jpa</artifactId>
    <version>1.11.4.RELEASE</version>
</dependency>

Выполнение немного Google не дало мне, если они разные или нет.

Во всех моих предыдущих проектах, где я добавил JPA, был JPA 2.1/Hibernate, поэтому я немного не уверен, какой из двух использовать в моем новом приложении SpringBoot.

Ответ 1

Как указано в документации, то starter один удобный Inliner для всех необходимых зависимостей для этой конкретной библиотеки, т.е. включает в себя другую зависимость в себе, вместо того, чтобы вы писать их вручную.

Посмотрите на spring-boot-starter-data-jpa pom.xml, вы увидите, что он включает в себя spring-data-jpa как зависимость среди многих других.

Spring Boot Starters - это набор удобных дескрипторов зависимостей, которые вы можете включить в свое приложение. Вы получаете универсальное решение для всех необходимых вам Spring и связанных с ними технологий без необходимости искать примеры кода и копировать множество дескрипторов зависимостей. Например, если вы хотите начать использовать Spring и JPA для доступа к базе данных, просто включите в ваш проект зависимость spring-boot-starter-data-jpa, и все готово.

Ответ 2

Проверьте pom.xml для spring -boot-starter-data-jpa здесь: https://github.com/spring-projects/spring-boot/blob/master/spring-boot-starters/spring-boot-starter-data-jpa/pom.xml

Прочитайте тег описания, который гласит: "Стартер для использования Spring Data JPA с Hibernate".

Итак, spring -boot-starter-data-jpa использует Spring Data JPA с Hibernate в качестве реализации. Это жестко закодировано, так сказать.

Если вы теперь проверите pom.xml для spring -data-jpa, он является агностическим. А для использования Spring Data JPA в любом проекте один должен обеспечить реализацию. Это не приведет к ошибке.

Spring Документация JPA данных утверждает, что в настоящее время она поддерживает Hibernate 5, (Apache) OpenJPA 2.4 и EclipseLink 2.6.1. Читайте здесь: https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#new-features.1-10-0

Ответ 3

Spring Boot предоставляет Spring spring-boot-starter-data-jpa starter для эффективного соединения приложения Spring с реляционной базой данных. У стартера есть дополнительные зависимости.

spring-data-jpa используется как зависимость для spring-boot-starter-data-jpa. Поскольку вы используете весеннюю загрузку версии 1.5.3, вы можете посмотреть здесь.

spring-data-jpa, часть большого семейства Spring Data, упрощает внедрение репозиториев на основе JPA. Этот модуль имеет дело с расширенной поддержкой слоев доступа к данным на основе JPA. Это облегчает создание приложений на базе Spring, использующих технологии доступа к данным.