繁体   English   中英

在Spring JDBC中执行数据库会话初始化SQL

[英]Execute database session initialization SQL in Spring JDBC

我通过JNDI查找将Spring JdbcTemplate / SimpleJdbcTemplate与Oracle数据源(oracle.jdbc.pool.OracleDataSource)结合使用。 此应用程序在连接到Oracle 11g数据库的Oracle应用服务器(OAS)10.1.3上运行。

我正在建立的数据库连接是一个具有几个非默认数据库角色的帐户。 在建立与数据库的物理连接时,我需要启用这些角色(可能通过Oracle“set role”命令)。 我没有看到任何方法配置Oracle数据源来发出SQL命令来执行此操作。 因为我的Java代码使用Spring JDBC类,所以它不处理打开和关闭连接。 Spring是否提供了一些在获取连接时运行某些初始化SQL的方法?

数据源定义:

<?xml version = '1.0' encoding = 'windows-1252'?>
<data-sources xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:noNamespaceSchemaLocation="http://xmlns.oracle.com/oracleas/schema/data-sources-10_1.xsd">
 <native-data-source data-source-class="oracle.jdbc.pool.OracleDataSource"
                      jndi-name="jdbc/xxx" name="xxx"
                      url="jdbc:oracle:thin:@hostxxx:1541:xxx"
                      password="zzzzz" user="username"/>
</data-sources>

Spring bean定义:

<jee:jndi-lookup id="dataSource" jndi-name="jdbc/xxx" />

您始终可以为DateSource创建代理并覆盖其getConnection()

也许甚至使用AOP

@Aspect
public class DataSourceAspect {
    @AfterReturning(value = "execution(* javax.sql.DataSource.getConnection(..))", 
        returning = "c")
    public void afterGetConnection(Connection c) {
        ...
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM