加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java-如何使用Oracle DB在Spring / mybatis应用程序中设置默认模

发布时间:2020-12-15 01:21:37 所属栏目:大数据 来源:网络整理
导读:来自mysql背景,我能够在连接URL中设置要用于所有SQL查询的默认架构名称.我现在有一个需要访问的Oracle数据库.我知道我无法在URL中指定要使用的架构,因为用户是所使用的架构名称. 我意识到我可以使用一行SQL代码: ALTER SESSION SET CURRENT_SCHEMA=default_

来自mysql背景,我能够在连接URL中设置要用于所有SQL查询的默认架构名称.我现在有一个需要访问的Oracle数据库.我知道我无法在URL中指定要使用的架构,因为用户是所使用的架构名称.

我意识到我可以使用一行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查找或系统环境属性来检索该值,我会很高兴.

谁能指出我正确的方向?

谢谢,

埃里克

最佳答案
据我所知,Oracle中没有任何选项可以更改URL以连接到特定的用户架构.

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;  

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读