来自脚本的基于 HSQL 文件的数据库

HSQL file based database from script

我有一个问题。我在玩 JSF/ Spring/ Hibernate 和 HSQL。 我有一个用于此目的的小型测试应用程序,对于我想实现的一个功能,我需要有可能保留一些数据。我不想有一个完整的数据库,所以我选择了 HSQL。从本教程 (http://devcrumb.com/hibernate/hibernate-jpa-spring-and-hsqldb) 开始,我构建了我的应用程序。我在数据类型方面遇到了一些问题,我选择从脚本构建我的数据库。

就像在教程中一样,我在 application.xml 中定义了我的数据源,只是我将 url 属性 更改为使用文件。

    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName">
            <value>org.hsqldb.jdbcDriver</value>
        </property>
        <property name="url">
            <value>jdbc:hsqldb:hsql://localhost/testdb</value>
        </property>
        <property name="username">
            <value>sa</value>
        </property>
        <property name="password">
            <value></value>
        </property>
    </bean>

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="persistenceUnitName" value="jpaData" />
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
        </property>
        <property name="jpaProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">false</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
            </props>
        </property>
    </bean>

现在,我已将数据源更改为如下内容:

<jdbc:embedded-database id="dataSource" type="HSQL">
    <jdbc:script location="classpath:embeddedDbStructure.sql" />
</jdbc:embedded-database>

到目前为止一切正常。 我的问题是,当服务器关闭时,这个数据库被删除了。是否有可能同时使用两者?一个脚本作为我的数据库结构的基础,但数据库本身被写入我的文件系统上的一个文件,以便它在服务器重启后可用?我知道可能有一些解决方案可以通过一些代码来实现这一点,但是是否有可能以这种方式配置它?

提前致谢

实际上对于您的情况,您使用的是 hsqldb 内存模式,spring 确实是一个内存数据库。要重用文件数据库,您需要更新 hsqldb 模式以使用 "In-Process Mode" like "jdbc:hsqldb:file:testdb"

其中一道例题是Embedded HSQLDB persist data to a file,大家可以参考一下