Transaction之坑:Spring中配置Transaction与不配置有何区别

Redis之坑:spring-data-redis中的Redis事务
Redis之坑:理解Redis事务
Redis之坑:Redis与MySQL中事务的区别
Transaction之坑:数据库事务
Transaction之坑:Spring中配置Transaction与不配置有何区别
Transaction之坑:分析sql执行结果,主动促使事务rollback


首先

Spring中 Transaction管理 配置有两种方式:

  • Annotation式:@Transactional
  • Xml式:<tx:method />

Note: 以下所有讨论,都是用 @Transactional 方式来 开启Transaction支持


问题

  1. 什么样的mehtod需要配置注解 @Transactional
  2. method 没有配置注解 @Transactional, 难道 sql操作 就不会被 commit

解决

  1. 配置@Transactional的目的就是手动开启事务,保证method中一系列sql操作包含在同一事务中,从保证数据的完整性(回滚或提交)与读写安全(隔离级别);

  2. DataSource缺省 配置: defaultAutoCommit=true;

即: 如果method不配置 @Transactional ,则每执行一个 SQL操作,如果成功,默认开启的事务就会 立即 向数据库自动commit,而不能rollback

  1. 为了维护 数据库的完整性,保证成批的 SQL 语句要么全部 commit,要么全部 rollback。通常包含以下两种方式:
    • BEGIN, ROLLBACK, COMMIT来实现,显式地开启并控制一个Transaction
    • 执行命令SET AUTOCOMMIT=0,用来 禁止 当前会话自动commit

method上配置注解@Transactional,就是使用第一种方式来实现Transaction管理 基于SpringAOP实现方法增强,这里表现为TransactionAspectSupport

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值