【问题标题】:In memory which supports Oracle "schema.package.function(IN, OUT)"在支持 Oracle "schema.package.function(IN, OUT)" 的内存中
【发布时间】:2019-08-02 12:42:25
【问题描述】:

我必须为使用 Spring boot 和 Oracle 创建的 REST API 编写 JUnit 测试用例。没有专门的测试数据库环境。所以我打算使用内存数据库。我在 H2 数据库上做了一个 POC。即使花了 3 天,我也能做一些基本的事情,但它与 Oracle 不完全兼容。它不支持 In、Out 参数,也不支持“调用 schema.package.function(In, Out)”。我能够创建架构和函数,但无法创建包。您能否建议一个支持以下内容的内存中

  1. 应该支持架构、包和函数的创建。
  2. 应该支持 In、Out 参数
  3. 应该是轻量级的
  4. 应该与 Oracle 和 Java 兼容

【问题讨论】:

  • 您应该使用与生产环境相同的数据库进行测试。为测试目的设置一个 Oracle 数据库。
  • Derby 不与 Oracle 兼容。但是,Derby 符合 SQL 标准。

标签: sqlite h2 derby hsqldb in-memory-database


【解决方案1】:

HSQLDB 支持 PROCEDURES 的 IN 和 OUT 参数。您可以通过将数据库 CATALOG 重命名为架构的名称并创建一个名为包的单独架构,然后在该架构中创建函数来模仿 schema.package.function(in, out)。

另外,HyperXtremeSQL (http://hyperxtreme.co.uk) 支持使用 Oracle 语法创建包、过程和函数。

【讨论】:

  • 从我的业务层我调用多个 DAO 层。每个都在不同的架构和不同的包中。如何处理这种情况。它适用于一个 DAO 层,但如何使其适用于多个 DAO 层。 (DAO1 -> schema1.package1.function1,DAO2 -> schema2.package2.function2)。现在我正在做 ALTER CATALOG PUBLIC RENAME 到 SCHEMA1,创建 SCHEMA 包。这适用于单元测试,但如何使其适用于集成测试。我们可以有多个 CATALOG 吗?
  • 你不能在 HSQLDB 中做多个包。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-21
  • 1970-01-01
  • 2012-04-18
  • 2021-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多