29.1.1. 对内嵌数据库的支持

开发应用时使用内存数据库是很方便的。显然,内存数据库不提供持久化存储;你只需要在应用启动时填充数据库,在应用结束前预先清除数据。

提示 How-to章节包含有一章讲解如何初始化数据库

Spring Boot可以自动配置的内嵌数据库包括H2, HSQLDerby。你不需要提供任何连接URL,只需要添加你想使用的内嵌数据库依赖。

如果你正在你的测试中使用这个特性,你可能注意到了:不管你使用了多少应用上下文,你的整个测试套件重复使用了同一个数据库。如果你想要确保每个上下文各自有一个内嵌数据库,你应当把 spring.datasource.generate-unique-name设置为true

例如,典型的POM依赖如下所示:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>org.hsqldb</groupId>
    <artifactId>hsqldb</artifactId>
    <scope>runtime</scope>
</dependency>

对于自动配置的内嵌数据库,你需要添加spring-jdbc依赖,在本示例中,spring-boot-starter-data-jpa已包含该依赖了。

无论出于什么原因,你需要配置内嵌数据库的连接URL,一定要确保数据库的自动关闭是禁用的。如果使用H2,你需要设置DB_CLOSE_ON_EXIT=FALSE。如果使用HSQLDB,你需要确保没使用shutdown=true。禁用数据库的自动关闭可以让Spring Boot控制何时关闭数据库,因此在数据库不需要时可以确保关闭只发生一次。

最后更新于