Eri*_* B. 3 java oracle schema spring mybatis
来自 mysql 背景的我能够在连接 url 中设置要用于所有 sql 查询的默认架构名称。我现在有一个需要访问的 Oracle 数据库。我知道我无法在 URL 中指定要使用的架构,因为用户是正在使用的架构名称。
我意识到我可以使用一行 SQL 代码:
ALTER SESSION SET CURRENT_SCHEMA=default_schema
Run Code Online (Sandbox Code Playgroud)
该项目使用mybatis 2.3.5作为我的 SQL 框架,但我对 mybatis 完全陌生。有没有简单的方法来配置mybatis来完成这个任务?我的应用程序是 Spring 3 应用程序,因此我使用Spring DataSourceTransactionManager来管理我的事务。我认为管理者必须了解这一要求,以确保每当创建新连接时都会发送命令。
我尝试过在线搜索,但我发现的大多数示例都将模式名称包含在 SqlMap 的 sql 查询中,我发现这是不好的做法。
在理想情况下,模式名称将是 URL 的一部分,这样我就可以针对不同环境(例如:开发、测试、生产等)更改模式名称,而无需接触代码(即:仅在 JNDI 上配置) /应用程序服务器级别)。如果我可以使用 Spring 配置值来设置它,并且我仍然可以使用 JNDI 查找或系统环境属性来检索该值,我会很高兴。
有人能指出我正确的方向吗?
谢谢,
埃里克
据我所知,Oracle 中没有选项可以更改 URL 以连接到特定的用户模式。
1)mybatis:您可以在开始操作之前将当前的模式设置为合适的模式。您可以将规范写入属性文件,并从该文件设置方法的参数。在这种情况下,您不需要更改代码来更改架构。
<update id="mySetSchemaMethod" parameterClass="String">
ALTER SESSION SET CURRENT_SCHEMA = ${schemaName}
</update>
Run Code Online (Sandbox Code Playgroud)
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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7238 次 |
| 最近记录: |