Spring-Boot / H2 将数据库快照写入文件系统

Posted

技术标签:

【中文标题】Spring-Boot / H2 将数据库快照写入文件系统【英文标题】:Spring-Boot / H2 Write database snapshots to file-system 【发布时间】:2017-02-08 13:13:01 【问题描述】:

我正在开发使用数据库的 Spring-Boot-Application。 我想让用户选择使用嵌入式数据库(用于快速测试)或基于硬盘的数据库(用于长期使用)。 我的方法是在 application.properties 中添加一个 bool 标志,在配置中读取它并创建想要的 DataSource。

@Bean
public DataSource dataSource()     
    if (embedded) 
        EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
        EmbeddedDatabase db = builder
                .setType(EmbeddedDatabaseType.H2)
                .addScript("db.sql")
                .build();
        return db;
     else 
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(driver);
        dataSource.setUrl(databaseURL);
        dataSource.setUsername(databaseUser);
        dataSource.setPassword(databasePassword);
        return dataSource;
    
   

这工作得很好。我现在的问题是我想在会话之间保留嵌入式数据库,并在应用程序再次启动时再次加载其内容(如果用户之前使用过嵌入式数据库,并且再次使用它,所以他不会丢失他的数据)

我需要在我的代码中添加什么以使数据库创建快照并在启动时再次使用它们?

Greetz 并感谢您的帮助, 帕特里克

【问题讨论】:

【参考方案1】:

你可以通过connection URL来配置它。

【讨论】:

感谢您的回答!遗憾的是,我没有看到在 EmbeddedDataBaseBuilder 中配置连接 url 的方法

以上是关于Spring-Boot / H2 将数据库快照写入文件系统的主要内容,如果未能解决你的问题,请参考以下文章

内存数据库spring-boot中的h2

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

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

H2 SCRIPT 命令是不是像快照一样工作?

如何使用 Netbeans Spring-Boot 项目访问 h2-console

Java如何将变量写入H2数据库