对于针对数据库抽象库的 11 个不同 RBDMS 运行的集成测试,我需要经常重置架构和/或数据。这意味着,我为大多数测试用例运行了大量的语句。
仅在测试套件开始时才需要模式重置。例如:
DROP VIEW
DROP TABLE
DROP SEQUENCE
DROP PROCEDURE
...
CREATE TABLE
...
只有写入数据的测试才需要数据重置。例如:
DROP SEQUENCE
DELETE FROM TABLE ...
CREATE SEQUENCE
INSERT INTO TABLE ...
只读测试非常快,因为它们不需要任何重置。直观地说,我只是将一个 SQL 文件读入内存并使用以下命令执行每条语句:
// No bind variables, all hard parses
// Bind variables won't help much, though as the "hard-parse-reduction" isn't very big.
stmt = connection.createStatement();
stmt.execute(sql);
在某些系统上,这非常慢。有没有更好的方法来用 JDBC 做到这一点?还是我必须接受这可能很慢的事实......?