2011-03-03 23 views
8

Utilizo en mi proyecto la gestión de transacciones basada en anotaciones (anoto algunos métodos con @Transactional). Me gustaría establecer el nivel de aislamiento globalmente (no poniéndolo como un argumento para cada anotación @Transactional).configuración del nivel de aislamiento en las transacciones basadas en la anotación de primavera

¿Es posible configurar eso en el XML? Actualmente mi configuración xml contiene

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

¿Es posible agregar el aislamiento de alguna manera a tx: anotación controlada?

Respuesta

5

La gestión de transacciones de Spring establece el aislamiento de transacción en el Connection si configura un aislamiento de transacción no predeterminado (especificándolo en una anotación @Transactional por ejemplo). Si puede configurar el aislamiento de las transacciones de las conexiones y asegurarse de que ningún otro mecanismo cambie el aislamiento de las transacciones de las conexiones, entonces, en efecto, establecerá globalmente el aislamiento de transacción utilizado por la aplicación.

Por ejemplo, la clase Commons DBCP BasicDataSource define la propiedad defaultTransactionIsolation para establecer el aislamiento de transacción de conexiones de regresar de la piscina:

<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> 
Cuestiones relacionadas