Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在H2数据库中模拟Oracle DB链接?_Java_Spring_Oracle_H2 - Fatal编程技术网

Java 如何在H2数据库中模拟Oracle DB链接?

Java 如何在H2数据库中模拟Oracle DB链接?,java,spring,oracle,h2,Java,Spring,Oracle,H2,我的问题如下:我必须测试一个用JavaSpring编写的应用程序。 在现实生活中,DB服务器将是Oracle。在使用DB链接的地方有一些选择。 (例如:从中选择*country@isem_db; ) 在测试环境中,我们使用H2数据库,它不知道这种语法。(@) 我的问题是:这是否可能使这种Oracle语法为H2所接受?在不修改原始源代码的情况下是否存在一些变通方法?您的Oracle代码不应包含嵌入式数据库链接。数据库链接名称可能会在不同的环境中更改,这会使代码变得脆弱。或者,您可能需要切换到使用本

我的问题如下:我必须测试一个用JavaSpring编写的应用程序。 在现实生活中,DB服务器将是Oracle。在使用DB链接的地方有一些选择。 (例如:从中选择*country@isem_db; ) 在测试环境中,我们使用H2数据库,它不知道这种语法。(@)

我的问题是:这是否可能使这种Oracle语法为H2所接受?在不修改原始源代码的情况下是否存在一些变通方法?

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

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

create synonym isem_country for country@isem_db;
显然,您需要更改Oracle代码以引用同义词名称而不是远程表

这为您提供了在H2中运行的解决方案,前提是您正在使用。在H2中,您将在本地表上创建同名的同义词:

create synonym isem_country for country;

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

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

create synonym isem_country for country@isem_db;
显然,您需要更改Oracle代码以引用同义词名称而不是远程表

这为您提供了在H2中运行的解决方案,前提是您正在使用。在H2中,您将在本地表上创建同名的同义词:

create synonym isem_country for country;

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