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

Posted

技术标签:

【中文标题】spring-data-jpa 和 spring-boot-starter-data-jpa 的区别【英文标题】:Difference between spring-data-jpa and spring-boot-starter-data-jpa 【发布时间】:2017-11-29 18:56:19 【问题描述】:

这可能不是最好的问题,但我注意到有 2 个 Spring JPA 用于 Spring boot。他们有什么不同。目前我正在尝试将 SpringBoot 1.5.3 项目与休眠一起设置。我记得我之前用 spring-boot-starter-data-jpa 用 JPA 设置了 Springboot。

我见过的大多数在线示例以及 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 应用程序中使用这两者中的哪一个。

【问题讨论】:

使用 Spring Boot。跟随指南:spring.io/guides/gs/accessing-data-jpa @duffymo 感谢您的参考。这就是我在遇到 org.springframework.data -> spring-data-jpa 之前完成我的 spring boot jpa 设置的方法 【参考方案1】:

如docs 中所述,starter 是此特定库的所有必需依赖项的便捷内联器,即本身包含其他依赖项,而不是您手动编写这些依赖项。

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

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

【讨论】:

那么 org.springframework.data -> spring-data-jpa 是在哪里出现的,还是 spring-boot-starter-data-jpa 包含 spring-data-jpa Artem 说得对:Spring Boot 版本引入了 Spring JPA JAR 和其他作为其依赖项。 @Acewin 我更新了答案(请参阅 pom.xml 部分)。 @ArtemNovikov 非常好的参考。 POM 文件确实很清楚。而且github中所有spring boot starter的参考页面真的很不错。【参考方案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 使用带有 Hibernate 的 Spring Data JPA 作为实现。可以这么说,这是硬编码的。

如果您现在检查 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

【讨论】:

其他人已经帮我提供了项目的 pom.xml 链接

以上是关于spring-data-jpa 和 spring-boot-starter-data-jpa 的区别的主要内容,如果未能解决你的问题,请参考以下文章

Spring-data-jpa详解,全方位介绍。

Spring-data-jpa详解,全方位介绍。

Spring-data-jpa 学习笔记

Maven 使用 spring-data-jpa 和 querydsl 构建问题

纯干货,Spring-data-jpa详解,全方位介绍

spring-data-jpa