spring-boot 文件系统中的持久 h2 数据库

Posted

技术标签:

【中文标题】spring-boot 文件系统中的持久 h2 数据库【英文标题】:spring-boot Persistent h2database in filesystem 【发布时间】:2017-12-20 19:20:40 【问题描述】:

如何使用 h2database 配置 spring-boot,以便每次重新启动时重用数据库。

这是我的 application.properties 文件中唯一的一行

spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

【问题讨论】:

你的意思是“重用数据库”? 【参考方案1】:

您必须为spring.datasource.url 指定一个指定文件系统数据库的值。您可以使用 jdbc:h2:file: 前缀来实现。 例如,您可以使用此配置将 DB 存储在您的 home 目录的 db 文件夹中的 mydb.mv.db 文件中:

spring.datasource.url = jdbc:h2:file:~/db/mydb

请注意,spring.jpa.database-platform=org.hibernate.dialect.H2Dialect 不是必需的。运行时位于类路径中的 url 和 H2 JDBC 驱动程序就足够了。

另请注意,默认情况下,如果您使用嵌入式数据库(H2、HSQL 或 Derby),数据库将在启动时自动创建。

即使您在 JDBC URL 中将文件指定为数据库也是如此。

所以为了避免在每次 Spring Boot 启动时重新创建数据库,您还应该添加:

spring.jpa.hibernate.ddl-auto = update

spring.jpa.hibernate.ddl-auto = validate

【讨论】:

还需要spring.jpa.hibernate.ddl-auto = update 而不是create-drop 在运行测试的情况下是否可以重新创建? 你应该有一个特定的application.properties,例如application-test.properties来区分这两种情况。

以上是关于spring-boot 文件系统中的持久 h2 数据库的主要内容,如果未能解决你的问题,请参考以下文章

内存数据库spring-boot中的h2

为啥 H2 进行 spring-boot 测试,但它会将数据写入我的本地 mysql 数据库?

Spring-Boot:6分钟掌握SpringBoot开发

Openshift 中 H2 数据库的 URL

在同一应用程序中使用内存中的 H2 和 H2 文件

在 spring-boot 集成测试中使用 H2 数据库的 JDBC 连接错误