###【附】基于SpringJDBC的事务

关于事务:使用事务可以保证同一个业务中的多条SQL语句产生的数据修改(增删改)要么全部成功,要么全部失败

所以,可以认为:**如果某个业务中涉及超过1次的增、删、改操作(例如需要执行2次Update,或1次Update加上1次Delete),则应该使用事务!**

在使用了SpringJDBC后(无视使用哪种数据库,或使用哪种持久层框架),当需要使用事务来保障数据操作时,只需要在相关的业务方法之前添加`@Transactional`注解即可!

> 该注解也可以添加在业务类之前,表示该业务类中所有业务方法都是有事务的保障的!

在SpringJDBC中,事务的处理过程大致是:

    开启事务:begin

    try {
        执行若干条SQL
        提交:commit
    } catch (RuntimeException e) {
        回滚:rollback
    }

也就是说,框架在处理时,一旦执行的SQL语句抛出了`RuntimeException`,就会导致事务回滚。

所以,在开发时,应该保证:**所有的增、删、改操作都应该获取其受影响的行数,如果不是预期值,就必须抛出RuntimeException或其子孙类异常,则后续该操作被应用于事务中时,才可以实现回滚效果!**

所以,关于SpringJDBC中事务的应用小结:

1. 所有的增、删、改操作都应该获取其受影响的行数,如果不是预期值,就必须抛出RuntimeException或其子孙类异常,则后续该操作被应用于事务中时,才可以实现回滚效果!

2. 如果某个业务中涉及超过1次的增、删、改操作(例如需要执行2次Update,或1次Update加上1次Delete),则应该在业务方法之前添加`@Transactional`!

> 如果使用的不是SpringBoot,而是传统的SSM框架,则需要在Spring的配置文件中配置`<tx:annotation-driven transaction-manager="xxx" />`和`<bean  id="xxx" class="DataSourceTransactionManager"><property name="dataSource" ref="xxxxx" /></bean>`。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值