繁体   English   中英

如何在内存数据库中使用高效的Java模拟Oracle数据库

[英]How to use efficient java in memory database to mock Oracle database

我有很多访问数据库的DAO测试。 我试图在内存数据库(如H2)中使用Java模拟它们。 但是问题是ddl脚本包含分区语句,H2似乎不支持该分区语句。 我基本上想使用与生产中相同的ddl脚本,并且不希望以任何方式为我的“单元”测试修改它们。 我还尝试了HSQL,但是发现H2更类似于oracle,但是即使那样它也不支持分区。 是否有解决方法?

我确实看过以下内容从Oracle实例创建内存数据库结构它讨论了使用H2,但我已经提到了它的缺点。 寻找一些替代方案。

如果要进行有意义的测试,则需要针对与在生产环境中运行的数据库版本相同的实例运行它们。

您可以使用Oracle的数据字典来生成包含表,表之间的关系,索引,约束等的H2模式。我正在使用这种生成的模式对内存中H2数据库进行测试。

例如,要获取所有表及其列,可以使用以下查询:

SELECT 
  ut.table_name,
  utc.column_name,
  utc.data_type,
  utc.data_length,
  utc.data_precision
  FROM user_tables ut JOIN user_tab_columns utc
    ON ut.table_name = utc.table_name;

可以对外键,其他约束,索引,序列和测试所需的所有其他内容进行类似的查询。 您还需要一个模板引擎,以将查询结果转换为H2 DDL脚本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM