[英]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.