基于HSQL文件的脚本数据库

时间:2015-08-20 09:25:37

标签: java spring hibernate jpa hsqldb

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

就像在tuorial中我在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>

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

提前致谢

1 个答案:

答案 0 :(得分:0)

实际上对于你的情况,你正在使用hsqldb内存模式,spring确实是一个内存数据库。要重用文件数据库,您需要更新hsqldb模式以使用&#34;进程内模式&#34;喜欢&#34; jdbc:hsqldb:file:testdb&#34;

示例问题是Embedded HSQLDB persist data to a file,您可以参考此内容。