我有以下问题:
我有一个数据库预填充了大量的测试数据。每次测试运行之后,我想放弃测试过程所做的更改。我已经尝试用嵌入式H2 DB来实现这一点。我只需要用原始文件覆盖DB文件,问题就会解决。但另一个问题出现了: H2不支持多线程而不作为服务器运行。
之后,我查看了HSQLDB。如果我正确理解它,如果它被用作普通文件DB (而不是内存中的),它仍然会将DB的内容加载到内存中,并在一段时间后将更改后的内容保存到磁盘上。
是否有可能只将文件DB读入内存,在内存中使用它,并在结束时丢弃任何更改?这就太完美了。使用回滚的解决方案也会很棒。
谢谢,丹尼尔
发布于 2013-10-29 11:35:07
对于H2数据库:
~/create.sql替换为classpath:/com/acme/init/create.sql。如果您对这些更改不感兴趣,可以在内存中数据库(jdbc:h2:mem:test;...)的组合中使用这种方法。发布于 2013-10-29 17:23:26
HSQLDB为这种使用提供了一个选项。
创建测试数据库后,执行关机。您将有一个.properties和.script文件。在.properties文件中添加以下一行:
files_readonly=true然后使用这个数据库进行测试。当应用程序退出时,不需要回滚或任何特殊操作。
或者,将其附加到测试应用程序的连接URL,;files_readonly=true
见“指南”本章:
mem
对于多线程应用程序测试,数据库事务模型通常是MVCC,您可以在原始数据库中设置它。
https://stackoverflow.com/questions/19655263
复制相似问题