JdbcTemplate中如何进行事务的提交设置?

JdbcTemplate支持设置事务的提交规则。事务提交指事务操作正常完成后,提交事务,使得数据库的改变持久化。

JdbcTemplate允许设置以下几种事务提交规则:

  • commitOnSuccess:事务操作成功后自动提交(默认规则)
  • commitOn(Exception.class):遇到指定异常提交
  • commitWithoutSavePoint:不使用事务保存点

设置事务提交规则的步骤如下:

  1. 在 Spring 配置文件中进行事务管理器的配置:
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>
  1. 在JdbcTemplate中添加@Transactional注解,指定提交规则:
public class UserDaoImpl implements UserDao {
    @Transactional(commitOn = {Exception.class})
    public void saveUser(User user) throws Exception {
        jdbcTemplate.update(SQL_INSERT, ...);  
    }
}
  1. 事务操作在遇到指定条件后会触发提交。
    例如:
  • commitOn设置为Exception.class,遇到Exception提交
  • saveUser()方法正常结束后,事务自动提交,数据变更持久化。

这可以使事务操作结果更早的持久化,而不必等到方法结束。

所以,通过为JdbcTemplate的方法指定@Transactional注解,设置合理的提交规则,可以使事务处理更加灵活。如果需要在指定异常后提交,可以设置commitOn规则。

一个完整示例:

@Transactional(commitOn = {Exception.class})  
public void saveUser() throws Exception {
    jdbcTemplate.update(SQL_INSERT, ...);  
}