【问题标题】:Re-initialise HSQL database重新初始化 HSQL 数据库
【发布时间】:2016-04-18 03:31:42
【问题描述】:

我正在我的一个项目中使用基于文件的 hsql 数据库。 现在我们正在进行大量测试以确保前端正常工作。但是由于我们数据的性质以及没有删除整个数据集的功能,我必须经常重新启动以删除数据库中的测试数据,以便重新开始一些测试。为了清楚起见,我不是在谈论 JUnit 测试,我们在每次 JUnit 测试开始后重置我们的数据库。我谈论应用程序本身的测试。顺便说一句,它是一个 JSF 应用程序,但这对我的问题来说应该不是太重要。

我正在考虑在运行时重置数据库的操作。例如删除整个数据库并使用我们在服务器启动时提供的脚本重新初始化它。

我找到了这个帖子:https://stackoverflow.com/a/9918473/1337295

但不幸的是,这不起作用,查询中的某些标记似乎对数据库是未知的。

我们这样配置我们的数据库:

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

<jdbc:initialize-database data-source="dataSource">
    <jdbc:script location="classpath:embeddedDB/embeddedDbStructure.sql"/>
    <jdbc:script location="classpath:embeddedDB/embeddedDbData.sql"/>
</jdbc:initialize-database>

我们使用基于文件的数据库,这样我们就可以使用数据库管理器 swing ui,它似乎不适用于内存数据库。

那么,是否可以在运行时重新初始化数据库?这样做的首选方法是什么?

提前致谢。

【问题讨论】:

    标签: hibernate hsqldb


    【解决方案1】:

    我想说最好的方法是让hibernate每次都使用它的实体为你构建一个新的数据库

     <property name="hbm2ddl.auto" value="create"/>
    

    如有必要,使用 DBUnit 设置默认数据。

    如果正在进行大量重置,是否有原因它是文件数据库而不是内存?

    【讨论】:

    • 好吧,正如我所说,我们正在使用数据库管理器 swing ui。我没有让它与内存数据库一起工作,基于文件的工作很好,我没有看到任何性能差异。它也只用于我们的开发环境,所以这并不重要。但是你的建议在我的情况下如何工作?就像我说过的,这里没有单元测试,或者说单元测试没有问题。我想在运行时从我的应用程序重新初始化数据库,所以我想它应该是一个编程解决方案。当我重新启动服务器时数据得到恢复,我只是想避免这一步,因为我很懒
    • 好吧抱歉我专注于单元测试。我会说你只是使用重新初始化数据库的 sql 脚本并直接从 jdbc 命令调用它。此时您使用什么数据库真的很重要。 spring 嵌入式数据库支持更多用于设置。
    猜你喜欢
    • 1970-01-01
    • 2021-06-15
    • 2019-12-05
    • 1970-01-01
    • 2011-03-13
    • 2014-04-23
    • 1970-01-01
    • 1970-01-01
    • 2016-04-12
    相关资源
    最近更新 更多