我通过JNDI查找将Spring JdbcTemplate / SimpleJdbcTemplate与Oracle数据源(oracle.jdbc.pool.OracleDataSource)结合使用。此应用程序在Oracle Application Server(OAS)10.1.3上运行,连接到Oracle 11g数据库。
我正在建立的数据库连接是一个具有几个非默认数据库角色的帐户。在建立与数据库的物理连接时,我需要启用这些角色(可能通过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" />
答案 0 :(得分:2)
您始终可以为DateSource
创建代理并覆盖其getConnection()
。
甚至可能是using AOP:
@Aspect
public class DataSourceAspect {
@AfterReturning(value = "execution(* javax.sql.DataSource.getConnection(..))",
returning = "c")
public void afterGetConnection(Connection c) {
...
}
}