【问题标题】:How to simulate an Oracle DB link in H2 database?如何在 H2 数据库中模拟 Oracle DB 链接?
【发布时间】:2020-03-06 08:51:43
【问题描述】:

我的问题如下:我必须测试一个用 Java Spring 编写的应用程序。 在现实生活中,数据库服务器将是一个 Oracle。有一些选择使用 DB 链接。 (例如:select * from country@isem_db; ) 在测试环境中,我们使用 H2 数据库,它不知道这种语法。(@)
我的问题是:这是否有可能使这种 Oracle 语法为 H2 所接受?在不修改原始源代码的情况下是否存在一些解决方法?

【问题讨论】:

  • 如果不修改应用程序中的查询或 H2 源,这是不可能的; H2 不支持这种非标准语法。您也可以在 H2 中链接来自其他数据库的表,但此类链接的表使用带有普通名称的常规语法。

标签: java spring oracle h2


【解决方案1】:

您的 Oracle 代码不应包含嵌入式数据库链接。数据库链接名称可能会因环境而异,这会使您的代码变得脆弱。或者您可能需要切换到使用本地副本(或实体化视图)。

正确的方法是使用同义词。在 Oracle 中,您将为远程表创建同义词:

create synonym isem_country for country@isem_db;

显然您需要更改 Oracle 代码以引用同义词名称而不是远程表。

这为您提供了在 H2 中运行的解决方案,前提是您使用的是 a recent version which supports table synonyms。在 H2 中,您将在本地表上创建具有相同名称的同义词:

create synonym isem_country for country;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-24
    • 2020-10-23
    • 2012-04-30
    • 2013-10-22
    • 2015-12-24
    • 1970-01-01
    • 2012-09-14
    • 1970-01-01
    相关资源
    最近更新 更多