Spring Data JPA 是不是在内部使用 Hibernate 以及如果我不提供方言属性,为啥我的应用程序正在运行?

Posted

技术标签:

【中文标题】Spring Data JPA 是不是在内部使用 Hibernate 以及如果我不提供方言属性,为啥我的应用程序正在运行?【英文标题】:Does Spring Data JPA internally use Hibernate & why my app is working if I am not giving dialect property?Spring Data JPA 是否在内部使用 Hibernate 以及如果我不提供方言属性,为什么我的应用程序正在运行? 【发布时间】:2018-03-20 04:26:02 【问题描述】:

我刚开始学习 Spring Data JPA,我在 localhost 中连接到 mysql 并能够保存记录,但是如果我没有在属性文件中提供方言属性并且休眠是默认实现,我无法理解它为什么会工作spring data 而不是 ibatis 或 Eclispe 链接,因为在我的 pom.xml 中我只是添加了 spring-data-jpa 的依赖项,并没有提到我想使用什么样的 JPA 实现。

application.properties

spring.jpa.hibernate.ddl-auto=create
spring.jpa.properties.hibernate.
spring.datasource.url=jdbc:mysql://localhost:3306/initsoftware
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=ppppppp
spring.datasource.password=xxxxxxx
logging.level.root=DEBUG
spring.jpa.show-sql=true

【问题讨论】:

【参考方案1】:

既然您有一个application.properties,我假设您使用的是 Spring Boot 而不仅仅是 Spring Data JPA。

为了在 Spring Boot 中使用 JPA,您通常需要将 spring-boot-starter-data-jpa 添加到您的依赖项中。正如您所见when you inspect the dependencies,这确实是 Hibernate 开箱即用的。

Spring Data JPA 本身不附带 JPA 实现。您必须添加它。

iBatis 不是 JPA 实现。

如果上述假设与您的情况不匹配,您可以使用maven dependency plugin 来检查您的(瞬态)依赖项。以下是一个很好的起点。

mvn dependency:tree -Dverbose

如果您使用不同的构建工具,它可能具有类似的功能。

【讨论】:

以上是关于Spring Data JPA 是不是在内部使用 Hibernate 以及如果我不提供方言属性,为啥我的应用程序正在运行?的主要内容,如果未能解决你的问题,请参考以下文章

spring-data-jpa

Spring Data JPA入门

15 Spring Data JPA概述

Spring Data JPA入门及深入

Spring Data JPA入门及深入

即使 JPA 实体不脏,我是不是可以强制 spring-data 更新可审计字段?