0

我有以下问题:

我有一个预填充大量测试数据的数据库。每次测试运行后,我想丢弃测试过程所做的更改。我已经尝试使用嵌入式 H2 DB 来做到这一点。我会用原始文件覆盖数据库文件,问题就会得到解决。但是出现了另一个问题:H2 不支持多线程而不作为服务器运行。

之后,我查看了 HSQLDB。如果我理解正确,如果它用作普通文件数据库(不是内存中),它仍会将数据库的内容加载到内存中,并在一段时间后将更改的内容保存到磁盘。

是否有可能将文件 DB 读入内存,在那里使用它并在最后丢弃任何更改?这将是完美的。使用回滚的解决方案也很棒。

谢谢,丹尼尔

4

2 回答 2

1

对于 H2 数据库:

于 2013-10-29T11:35:07.360 回答
1

HSQLDB 有一个用于这种用法的选项。

创建测试数据库后,执行 SHUTDOWN。您将拥有一个 .properties 和 .script 文件。在 .properties 文件中添加以下行:

files_readonly=true

然后使用这个数据库进行测试。当应用程序退出时,不需要回滚或任何特殊操作。

或者,将其附加到您的测试应用程序的连接 URL,;files_readonly=true

请参阅指南的本章:

http://www.hsqldb.org/doc/2.0/guide/dbproperties-chapt.html#dpc_db_file_mem

对于多线程应用测试,数据库事务模型通常是MVCC,你在原始数据库中设置。

于 2013-10-29T17:23:26.447 回答