相关疑难解决方法(0)

从Oracle实例创建内存数据库结构

我有一个应用程序,其中许多"单元"测试在执行期间使用与Oracle数据库的真实连接.

可以想象,这些测试需要花费太多时间来执行,因为它们需要初始化一些Spring上下文,并与Oracle实例进行通信.除此之外,我们还必须管理复杂的机制,例如事务,以避免在测试执行后修改数据库(即使我们使用Spring中的有用类AbstractAnnotationAwareTransactionalTests).

所以我的想法是逐步用内存数据库替换这个Oracle测试实例.我会用hsqldb或者更好h2.

我的问题是要知道这样做的最佳方法是什么.我主要关心的是构建内存数据库结构和插入参考数据.

当然,我可以使用像SQL Developeror 这样的工具从Oracle中提取数据库结构TOAD,然后修改这些脚本以使它们适应hsqldbh2使用它们.但我不认为这是更好的方法.


事实上,我已经在另一个项目上使用了hsqldb,但是我已经手动编写了所有脚本来创建表.幸运的是,我只创建了几张桌子.我在此步骤中的主要问题是将用于创建表的Oracle脚本"转换"为该hsqldb语言.

例如,使用以下sql命令在Oracle中创建的表:

CREATE TABLE FOOBAR (
    SOME_ID NUMBER,
    SOME_DATE DATE, -- Add primary key constraint
    SOME_STATUS NUMBER,
    SOME_FLAG NUMBER(1) DEFAULT 0 NOT NULL);
Run Code Online (Sandbox Code Playgroud)

需要"翻译"为hsqldb:

CREATE TABLE FOOBAR (
    SOME_ID NUMERIC,
    SOME_DATE TIMESTAMP PRIMARY KEY,
    SOME_STATUS NUMERIC,
    SOME_FLAG INTEGER DEFAULT 0 NOT NULL);
Run Code Online (Sandbox Code Playgroud)

在我当前的项目中,有太多表要手动执行...


所以我的问题:

  • 您可以给我什么建议来实现这一目标?
  • 是否h2还是hsqldb提供了一些工具来生成一个Oracle连接的脚本?

技术信息 …

java unit-testing h2 hsqldb in-memory-database

32
推荐指数
2
解决办法
2万
查看次数

标签 统计

h2 ×1

hsqldb ×1

in-memory-database ×1

java ×1

unit-testing ×1