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

时间:2017-06-26 20:26:02

标签: java spring spring-boot spring-data spring-data-jpa

这可能不是最好问的问题,但我注意到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应用程序中使用哪两个。

3 个答案:

答案 0 :(得分:24)

正如docs中所述,starter一个是这个特定库所有必需依赖项的方便内联,即包含其他依赖项,而不是手动编写它们。

查看spring-boot-starter-data-jpa pom.xml,您会看到它包含spring-data-jpa作为许多其他人的依赖关系。

  

Spring Boot Starters是一组方便的依赖描述符   您可以在申请中加入。你得到一站式服务   您需要的所有Spring和相关技术,而不必   搜索示例代码并复制粘贴依赖项   描述。例如,如果你想开始使用Spring和   用于数据库访问的JPA只包含s​​pring-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支持的应用程序变得更加容易。