为什么H2数据库在Springboot应用程序中使用Hibernate Core

时间:2019-02-22 08:13:56

标签: spring spring-boot h2

我有一个简单的springboot应用程序,它在内存db中使用H2。我在POM中使用了以下依赖项

  1. spring-boot-starter-data-jpa
  2. com.h2database.h2

当我启动应用程序时,它会使用Hibernate Dialect自动创建实体表。我的POM中没有提到有关Hibernate的内容。那么为什么会这样呢?为什么Spring使用Hibernate方言。我们是否可以将该方言更改为其他方言?请帮忙。

2 个答案:

答案 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,休眠状态已下载为隐式依赖项。