2011-04-25 39 views
0

我通過JNDI查找將Spring JdbcTemplate/SimpleJdbcTemplate與Oracle數據源(oracle.jdbc.pool.OracleDataSource)結合使用。此應用程序在連接到Oracle 11g數據庫的Oracle應用服務器(OAS)10.1.3上運行。在Spring JDBC中執行數據庫會話初始化SQL

我正在創建的數據庫連接是一個擁有幾個非默認數據庫角色的帳戶。當建立與數據庫的物理連接時,我需要啓用這些角色(可能通過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" /> 

回答

2

您可以隨時創建爲DateSource代理並覆蓋其getConnection()

甚至using AOP

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

因爲我認爲這是一個潛在的解決問題的辦法,我會接受這個答案。 – GriffeyDog 2011-04-27 13:28:11