2011-04-25 6 views
0

Spring JdbcTemplate/SimpleJdbcTemplate을 JNDI 조회를 통해 Oracle 데이터 소스 (oracle.jdbc.pool.OracleDataSource)와 함께 사용하고 있습니다. 이 응용 프로그램은 Oracle 11g 데이터베이스에 연결하는 Oracle Application Server (OAS) 10.1.3에서 실행됩니다.스프링에서 데이터베이스 세션 초기화 SQL 실행

데이터베이스 연결은 몇 가지 기본 데이터베이스 역할이 아닌 계정에 대한 것입니다. 데이터베이스에 대한 물리적 연결이 설정되면이 역할을 가능하게해야합니다 (아마도 Oracle의 "역할 설정"명령을 통해). 이 작업을 수행하기 위해 SQL 명령을 실행하도록 Oracle 데이터 소스를 구성하는 방법은 없습니다. 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> 

스프링 빈 정의 : 당신은 항상 DateSource에 대한 프록시를 생성하고 getConnection()을 무시할 수

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

답변

2

. 어쩌면 using AOP

: 나는이 문제에 대한 잠재적 인 솔루션입니다 생각하는

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

나는이 대답을 받아 들일 수 있습니다. – GriffeyDog

관련 문제