2012-08-14 35 views
2

来自mysql后台,我可以设置我想用于连接url中的所有sql查询的默认模式名称。我现在有一个需要访问的Oracle数据库。我知道我无法指定我想在URL中使用的模式,因为用户是使用的模式名称。如何使用Oracle DB在Spring/mybatis应用程序中设置默认模式?

我意识到,我可以用一行SQL代码:

ALTER SESSION SET CURRENT_SCHEMA=default_schema 

该项目使用mybatis 2.3.5我的SQL框架,但我完全新的MyBatis的。有没有简单的方法来配置mybatis来完成这个?我的应用程序是Spring 3应用程序,所以我使用Spring DataSourceTransactionManager来管理我的事务。我会假设管理员必须了解这一要求,以确保在创建新连接时发送该命令。

我试过在线搜索,但是我发现大多数例子都有在SqlMaps中的sql查询中包含的模式名称,我发现这是不好的做法。

在理想情况下,模式名称将成为URL的一部分,这样我就可以在不触及代码的情况下对不同环境(例如:dev,test,prod等)的模式名称进行更改(即:仅限在JNDI /应用程序服务器级配置)。我会很高兴,如果我可以使用Spring配置值来设置它,以及我仍然可以使用JNDI查找或系统环境属性来检索值。

任何人都可以指向正确的方向吗?

感谢,

埃里克

回答

3

据我所知,有在Oracle中没有选项来改变您的网址,以便连接到特定的用户架构。

1)mybatis:在开始操作之前,您可以将当前的模式设置为应有的模式。您可以将您的规范写入属性文件并从该文件设置方法的参数。在这种情况下,您不需要更改代码来更改架构。

<update id="mySetSchemaMethod" parameterClass="String"> 
ALTER SESSION SET CURRENT_SCHEMA = ${schemaName} 
</update> 

2)触发:如果您仅使用此特定的Java应用程序这方面,你可以设置一个客户端事件触发因此请设置CURRENT_SCHEMA。这次,您需要更改触发器以管理测试/更改。

CREATE OR REPLACE TRIGGER Set_Schema_On_Logon 
    AFTER LOGON 
    ON MY_SCHEMA 
BEGIN 
    ALTER SESSION SET CURRENT_SCHEMA = MY_TEST_SCHEMA; 
END; 
+0

谢谢!不幸的是,这个信息对于我之前的项目来说太迟了,但对于未来的案例将是非常宝贵的。 – 2013-11-15 16:03:29

相关问题