我有一个简单的springboot应用程序,它在内存db中使用H2。我在POM中使用了以下依赖项
当我启动应用程序时,它会使用Hibernate Dialect自动创建实体表。我的POM中没有提到有关Hibernate的内容。那么为什么会这样呢?为什么Spring使用Hibernate方言。我们是否可以将该方言更改为其他方言?请帮忙。
答案 0 :(得分:1)
好吧,您使用“ spring-boot-starter-data-jpa”和“ starter”概念意味着它具有一切正常工作的能力。如果您查看https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa/2.1.3.RELEASE,则此依赖项还包括hibernate-core。
答案 1 :(得分:1)
SpringBoot生态系统中的入门级poms带来了一袋依赖关系,这些依赖关系已经过测试并证明可以协同工作。它还可以节省您管理正确的依赖项版本的麻烦。
您正在使用spring-boot-starter-data-jpa-这是JPA的入门级pom-此处的选择是将Hiberante用作JPA提供程序。
如果您查看pom文件的源代码,则会看到以下定义:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<exclusions>
<exclusion>
<groupId>org.jboss.spec.javax.transaction</groupId>
<artifactId>jboss-transaction-api_1.2_spec</artifactId>
</exclusion>
</exclusions>
</dependency>
这就是使休眠进入项目的原因,尽管您尚未在pom中明确声明它。由于您的spring-boot-starter-data-jpa入门级pom,休眠状态已下载为隐式依赖项。