首页 > 解决方案 > 如何在 H2 数据库中模拟 Oracle DB 链接?

问题描述

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

标签: javaspringoracleh2

解决方案


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

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

create synonym isem_country for country@isem_db;

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

这为您提供了在 H2 中运行的解决方案,前提是您使用的是支持表同义词的最新版本。在 H2 中,您将创建一个同名但在本地表上的同义词:

create synonym isem_country for country;

推荐阅读