spring-data-jpa 和 spring-boot-starter-data-jpa 之间的区别

这可能不是最好的问题,但我注意到有2个春季JPA用于春季靴子。它们有何不同?目前,我正在尝试与Hibernate一起建立一个Spring Boot 1.5.3项目。我记得我之前用JPA设置了Spring Boot,用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>

做一点谷歌没有给我他们是否不同。

在我之前的所有项目中,我都通过JPA 2.1 / Hibernate添加了JPA,这就是为什么我有点不确定在我的新Spring Boot应用程序中使用2中的哪一个。


答案 1

文档中所述,对于此特定库的所有必需依赖项,即它本身包含其他依赖项,而不是手动编写这些依赖项,则一个是方便的内联器。starter

看看pom.xml,你会看到它包括作为许多其他依赖项。spring-boot-starter-data-jpaspring-data-jpa

Spring Boot Starters 是一组方便的依赖项描述符,可以包含在应用程序中。您可以获得所需的所有Spring和相关技术的一站式商店,而无需搜索示例代码并复制粘贴大量依赖项描述符。例如,如果你想开始使用Spring和JPA进行数据库访问,只需在你的项目中包含spring-boot-starter-data-jpa依赖项,你就可以开始了。


答案 2

检查 pom.xml 弹簧-启动器-数据-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 Data 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


推荐