2011-03-03 5 views
8

내 프로젝트 주석 기반 트랜잭션 관리에서 사용합니다 (일부 메소드에 @Transactional 주석을 추가 함). 전 세계적으로 (각 @Transactional 어노테이션에 인수로 넣지 않고) 분리 레벨을 설정하고 싶습니다.스프링 주석 기반 트랜잭션에서 격리 수준 설정

XML에서 구성 할 수 있습니까? 현재 내 XML 구성에

<tx:annotation-driven transaction-manager="txManager"/> 
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
    <property name="dataSource" ref="dataSource" /> 
</bean> 

어쨌든 tx : annotation-driven에 격리를 추가 할 수 있습니까?

답변

5

스프링의 트랜잭션 관리는 기본값이 아닌 트랜잭션 격리 (예 : @Transactional 주석에서 지정)를 구성하면 Connection에 트랜잭션 격리를 설정합니다. 다른 메커니즘이 연결의 트랜잭션 격리를 변경하지 않도록 보장하면서 연결의 트랜잭션 격리를 구성 할 수 있으면 실제로 응용 프로그램에서 사용되는 트랜잭션 격리를 전역 적으로 설정합니다.

<bean 
    id="dataSource" 
    class="org.apache.commons.dbcp.BasicDataSource" 
    destroy-method="close"> 
    <property name="driverClassName" value="${jdbc.driverClassName}"/> 
    <property name="url" value="${jdbc.url}"/> 
    <property name="username" value="${jdbc.username}"/> 
    <property name="password" value="${jdbc.password}"/> 
    <property name="defaultTransactionIsolation"> 
    <util:constant static-field="java.sql.Connection.TRANSACTION_READ_COMMITTED"/> 
    </property> 
</bean> 
:

예를 들어

은 하원 DBCP BasicDataSource의 클래스는 풀에서 반환 된 연결의 트랜잭션 격리를 설정하는 defaultTransactionIsolation 속성을 정의