我有很多访问数据库的 DAO 测试。我试图在像 H2 这样的内存数据库中使用 Java 来模拟它们。但问题是 ddl 脚本包含 H2 似乎不支持的分区语句。我基本上想使用与生产中相同的 ddl 脚本,并且不想以任何方式为我的“单元”测试修改它们。我也尝试过 HSQL,但发现 H2 更类似于 oracle,但即便如此,它也不支持分区。有解决方法吗?
我确实看了下面的 Create an in-memory database structure from an Oracle instance 它谈到了使用 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;
Run Code Online (Sandbox Code Playgroud)
可以对外键、其他约束、索引、序列以及测试所需的所有其他内容进行类似的查询。您还需要一个模板引擎来将查询结果转换为 H2 DDL 脚本。