嵌入式HSQLDB将数据持久保存到文件中

use*_*356 8 hsqldb spring-jdbc

我正在创建一个使用嵌入式hsqldb的基于Spring的Web应用程序.我的spring配置非常简单:

<jdbc:embedded-database id="dataSource" type="HSQL" >
    <jdbc:script location="classpath:scripts/create-table-if-not-exists" />
</jdbc:embedded-database>
Run Code Online (Sandbox Code Playgroud)

但是使用此配置,所有数据都存储在内存中.这是创建的数据源URL

jdbc:hsqldb:mem:dataSource
Run Code Online (Sandbox Code Playgroud)

我需要将数据保存到文件中.这样我可以在服务器重启后再次使用它.

use*_*356 8

这个解决方案对我有用

<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>
Run Code Online (Sandbox Code Playgroud)

  • @Paul - 我正在使用Spring MVC Web应用程序来模拟基于Map的内存持久层.显然,数据库的性能要高得多,所以我想使用HSQLDB.我希望嵌入数据库,即启动和停止应用程序,但我希望数据是永久性的,即基于文件.有没有办法实现这个目标? (2认同)
  • @WebUser,我之前的评论是错误的.我应该说"从内存数据库中持久保存数据的解决方案不是使用内存数据库." 接受的答案中提供的解决方案应该适合您 - 数据存储在文件中,数据库本身是嵌入的. (2认同)