在同一应用程序中使用内存中的 H2 和 H2 文件
Posted
技术标签:
【中文标题】在同一应用程序中使用内存中的 H2 和 H2 文件【英文标题】:Using H2 in memory AND H2 file within same application 【发布时间】:2020-10-25 08:15:09 【问题描述】:是否可以在同一个应用程序中使用两个 H2 数据库:内存中用于某些类型的数据和文件存储用于其他数据?
我的应用程序使用 spring boot/batch。 Spring 自动将一些元数据存储在 H2 中。我无法控制它,通常也不关心持久化它 - 这就是我希望它存储在内存中的原因。
但是,我也有我希望保留的应用程序特定数据 - 我希望将其存储在一个文件中。
这可能吗?
【问题讨论】:
定义两个数据源:一个在内存中,一个由文件支持,然后配置Spring Batch使用内存中的一个:***.com/questions/25540502/… 【参考方案1】:您想要定义多个数据源并将其中一个分配为 主要的。
将 Spring Boot 应用程序与 H2 连接:在大多数情况下,只需将 H2 运行时 jar 添加到依赖项中就足够了。
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
一种简化配置的建议方法是创建单独的配置类,从而分离存储库包等。
使用 Spring Boot 将 H2 作为持久数据库运行所需的最低配置:
将application.properties
更新为:
# H2
spring.h2.console.enabled=true
spring.h2.console.path=/h2
# Datasource
spring.datasource.url=jdbc:h2:file:~/spring-boot-h2-db
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driver-class-name=org.h2.Driver
spring.jpa.hibernate.ddl-auto=update
请阅读文档以便更好地理解: Configure Two Data Sources
【讨论】:
这是有道理的。但是,我希望将 Spring 批处理元数据存储在内存中。我不控制那些事务,这使得这两个数据源的方法变得困难。在将应用程序数据存储在文件中的同时,我如何才能让 Spring 将所有内容批量存储在内存中?以上是关于在同一应用程序中使用内存中的 H2 和 H2 文件的主要内容,如果未能解决你的问题,请参考以下文章
内存数据库H2中的Spring Boot在初始化时不会从文件中加载数据
在测试我的 Quarkus 应用程序时如何使用内存中的 H2 数据库?