我正在我的一个项目中使用基于文件的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,它似乎不适用于内存数据库。
那么,是否可以在运行时重新启动数据库?这样做的首选方式是什么?
提前致谢。
答案 0 :(得分:0)
我想说最好的方法就是让hibernate每次使用
从它的实体构建一个新的数据库 <property name="hbm2ddl.auto" value="create"/>
如有必要,请使用DBUnit设置默认数据。
是否存在文件数据库而不是内存的原因,如果有很多重置正在进行?