JdbcTemplate中如何进行事务的注解?

JdbcTemplate支持通过注解进行事务管理。与切面配置相比,注解方式更加简单直观。

JdbcTemplate的事务注解步骤如下:

  1. 在 Spring 配置文件中定义事务管理器:
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>
  1. 使用tx namespace定义事务通知:
<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="*"/>
    </tx:attributes>
</tx:advice> 
  1. 在需要事务支持的方法上使用@Transactional注解:
public class UserService {
    @Transactional
    public void saveUser() {
        ...
    }
}
  1. @Transactional注解会自动应用事务配置。
    例如:
  • saveUser()方法添加@Transactional注解
  • 会自动应用事务通知中定义的规则
  • 不需要显示调用事务管理 API 进行控制

所以,通过简单的注解,就可以实现强大的声明式事务管理。

一个完整示例:

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/> 
</bean>

<tx:advice id="txAdvice" transaction-manager="transactionManager">  
    <tx:attributes>  
        <tx:method name="*"/>
    </tx:attributes>  
</tx:advice>
public class UserService {
    @Transactional
    public void saveUser() {
        ...
    }
}