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 以及如果我不提供方言属性,为啥我的应用程序正在运行?的主要内容,如果未能解决你的问题,请参考以下文章