我有以下问题:
我有一个预填充了很多测试数据的数据库。每次测试运行后,我都希望放弃测试过程中所做的更改。我已经尝试使用嵌入式H2 DB来做到这一点。我只要用原始文件覆盖DB文件,问题就可以解决。但是出现了另一个问题:H2在不作为服务器运行的情况下不支持多线程。
之后,我看了看HSQLDB。如果我正确理解它,如果将其用作普通文件数据库(而不是内存中的数据库),它将仍将数据库的内容加载到内存中,并在一段时间后将更改保存到磁盘。
是否有可能将文件DB读入内存,在那里使用它,并在最后丢弃任何更改?这将是完美的。使用回滚的解决方案也很好。
谢谢,
丹尼尔
最佳答案
对于H2数据库:
要从脚本append ;INIT=runscript from '~/create.sql'
to the database URL加载数据库。您还可以从类路径中的资源加载脚本;为此,将~/create.sql
替换为classpath:/com/acme/init/create.sql
。如果您对更改不感兴趣,可以将其与内存数据库(jdbc:h2:mem:test;...
)结合使用。
要在多线程模式下使用H2数据库,请使用append ;MULTI_THREADED=1
to the database URL。这适用于所有模式(内存,嵌入式,客户端/服务器)。