嵌入式 HSQLDB 将数据持久化到文件中
Posted
技术标签:
【中文标题】嵌入式 HSQLDB 将数据持久化到文件中【英文标题】:Embedded HSQLDB persist data to a file 【发布时间】:2014-09-09 10:31:54 【问题描述】:我正在创建一个使用嵌入式 hsqldb 的基于 Spring 的 Web 应用程序。 我的 spring 配置非常简单:
<jdbc:embedded-database id="dataSource" type="HSQL" >
<jdbc:script location="classpath:scripts/create-table-if-not-exists" />
</jdbc:embedded-database>
但是使用此配置,所有数据都存储在内存中。这是创建的数据源 url
jdbc:hsqldb:mem:dataSource
我需要将数据保存到文件中。这样服务器重启后我可以再次使用它。
【问题讨论】:
如果需要持久化,那为什么要使用mem
模式呢?
@a_horse_with_no_name 我没有指定内存模式。我假设这是 spring 创建的默认配置。
jdbc:embedded-database
在 Spring 中表示 mem: 数据库。在 URL 中使用 file: 自己定义一个数据库。
roytuts.com/embedded-hsql-database-with-spring/
【参考方案1】:
这个解决方案对我有用
<bean class="org.apache.commons.dbcp2.BasicDataSource" id="dataSource">
<property name="driverClassName" value="org.hsqldb.jdbcDriver" />
<property name="url" value="jdbc:hsqldb:file:#systemProperties['user.home']/db/data" />
<property name="username" value="sa" />
<property name="password" value="" />
</bean>
<jdbc:initialize-database data-source="dataSource">
<jdbc:script location="classpath:scripts/create-table-if-not-exists" />
</jdbc:initialize-database>
【讨论】:
换句话说,从嵌入式 HSQLDB 数据库中持久化数据的解决方案是不使用嵌入式数据库。 @Paul - 我正在使用一个 Spring MVC Web 应用程序来模拟基于 Map 的内存持久层。显然,数据库的性能要高得多,所以我想使用 HSQLDB。我希望嵌入数据库,即随应用程序启动和停止,但我希望数据是永久性的,即基于文件的。有没有办法做到这一点? @WebUser,我之前的评论有误。我应该说“从内存数据库中持久化数据的解决方案是不使用内存数据库。”接受的答案中提出的解决方案应该适合您 - 数据存储在文件中,并且数据库本身是嵌入的。 @Paul 这当然有帮助。谢谢!以上是关于嵌入式 HSQLDB 将数据持久化到文件中的主要内容,如果未能解决你的问题,请参考以下文章
运行程序后文件数据库中没有模式通过休眠持久化到 hsqldb:file
无法使用 JPA 2.0、Spring 2.5.6、Hibernate 3.6.1 和 Maven 在 HSQLDB 中持久化