2017-06-26 186 views
3

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

但在现有项目的一个我碰到弹簧数据的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应用程序中使用2的哪一个。

+1

与Spring Boot一起去。遵循指南:https://spring.io/guides/gs/accessing-data-jpa/ – duffymo

+0

@duffymo感谢您的参考。多数民众赞成在弹簧引导jpa设置完成之前,我已经完成了org.springframework.data - > spring-data-jpa – Acewin

回答

5

docs所述,starter one对于该特定库的所有必需的依赖性而言是方便的内联,即其本身包含其他依赖关系,而不是您手动编写这些依赖关系。

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

Spring Boot Starters是一套方便的依赖关系描述符 ,您可以将其包含在您的应用程序中。您可以通过 获得所需的所有弹簧和相关技术,而无需通过示例代码搜索 并复制粘贴 描述符的负载。例如,如果您想开始使用Spring和JPA进行数据库访问,只需在项目中包含spring-boot-starter-data-jpa 依赖项,那么您就很好。

+0

那么在哪里org.springframework。数据 - > spring-data-jpa进入图片还是spring-boot-starter-data-jpa包含spring-data-jpa – Acewin

+0

Artem正确:Spring Boot版本引入Spring JPA JAR和其他作为它的依赖关系。 – duffymo

+0

@Acewin我更新了答案(请参阅关于pom.xml部分)。 –

3

检查pom.xml中的弹簧引导起动数据JPA这里:https://github.com/spring-projects/spring-boot/blob/master/spring-boot-starters/spring-boot-starter-data-jpa/pom.xml

阅读说明标签,它说:“入门使用与Hibernate春数据JPA”。

因此spring-boot-starter-data-jpa使用Spring Data JPA和Hibernate作为实现。这是硬编码的,可以这么说。

如果您现在检查spring-data-jpa的pom.xml,它是与实现无关的。并且要在任何项目中使用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

+0

其他人已经帮助我了解项目的链接到pom.xml – Acewin