代码之家  ›  专栏  ›  技术社区  ›  Matthias Nicklisch

脚本中基于HSQL文件的数据库

  •  0
  • Matthias Nicklisch  · 技术社区  · 9 年前

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

    就像在tuorial中一样,我在应用程序中定义了这样的数据源。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>
    

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

    提前感谢

    1 回复  |  直到 9 年前
        1
  •  1
  •   Community CDub    7 年前

    实际上,对于您的情况,您使用的是内存模式的hsqldb,弹簧实际上是内存数据库。要重用文件数据库,您需要更新hsqldb模式以使用“进程模式”,如“jdbc:hsqldb:file:testdb”

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