Embedded HSQLDB persist data to a file

user1745356 picture user1745356 · Jul 18, 2014 · Viewed 9k times · Source

I am creating a spring based web application that uses embedded hsqldb. My spring config is pretty simple:

<jdbc:embedded-database id="dataSource" type="HSQL" >
    <jdbc:script location="classpath:scripts/create-table-if-not-exists" />
</jdbc:embedded-database>

But with this config all data is stored in memory. Here is the data source url that is created

jdbc:hsqldb:mem:dataSource

I need to persist data to a file. So that I can use it again after server restart.

Answer

user1745356 picture user1745356 · Jul 21, 2014

This solution worked for me

<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>