这可能不是最好问的问题,但我注意到Spring引导有2个Spring JPA。他们有什么不同。目前我正在尝试与hibernate一起设置SpringBoot 1.5.3项目。我记得我之前使用spring-boot-starter-data-jpa设置了Springboot和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虽然是JPA 2.1 / Hibernate,但这就是为什么我有点不确定在我的新SpringBoot应用程序中使用哪两个。
答案 0 :(得分:24)
正如docs中所述,starter
一个是这个特定库所有必需依赖项的方便内联,即包含其他依赖项,而不是手动编写它们。
查看spring-boot-starter-data-jpa
pom.xml,您会看到它包含spring-data-jpa
作为许多其他人的依赖关系。
Spring Boot Starters是一组方便的依赖描述符 您可以在申请中加入。你得到一站式服务 您需要的所有Spring和相关技术,而不必 搜索示例代码并复制粘贴依赖项 描述。例如,如果你想开始使用Spring和 用于数据库访问的JPA只包含spring-boot-starter-data-jpa 你的项目依赖,你很高兴。
答案 1 :(得分:3)
在这里查看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
阅读描述标签,其中包含:&#34; Starter for Spring Data JPA with Hibernate&#34;。
所以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
答案 2 :(得分:0)
Spring Boot 提供了spring-boot-starter-data-jpa
入门程序,可以有效地将spring应用程序与关系数据库连接。入门者还有其他依赖性。
spring-data-jpa
用作spring-boot-starter-data-jpa
的依赖项。由于您使用的是Spring Boot版本1.5.3,因此可以看看here。
spring-data-jpa
是较大的Spring Data系列的一部分,可轻松实现基于JPA的存储库。该模块处理对基于JPA的数据访问层的增强支持。它使构建使用数据访问技术的Spring支持的应用程序变得更加容易。