Spring 事务管理问题

1 篇文章 0 订阅
1 篇文章 0 订阅

在进行spring事务控制问题时,经常会碰到将事务加载到 service层,至于为什么要加载到这一层却没有弄明白?


下面讲讲个人针对事务的理解:


1、spring什么时候会提交事务,什么时候会回滚事务。

spring事务处理时,会针对事务层事务层方法返回时进行检查,如果检查到有异常抛出,spring将回滚该事物,如果没有异常抛出将会提交事务。


2、事务加载到DAO层,针对系统的影响。

DAO层是针对数据库操作的一层,一般来说单独的DAO只会针对某个实例进行操作,如果事务加载到该层,可以保证针对该表的事务保持一致。

而一次业务处理一般会包含多个表的操作,可能会调用到多个DAO,如果其中某一个出错,将会影响到事务的一致性。


3、事务加载到view层,即action层。

针对事务的处理,如果在业务处理过程中,需要抛出异常(回滚事务),

如果在action层捕获异常,不再抛出异常的情况下,spring事务管理会认为该次处理过程中没有异常抛出,将会提交该事物,因此异常前的内容将会被提交,不能保证事务的一致性。

如果不捕获异常,将异常抛出,spring事务管理将会回滚该事物,针对系统数据不会有影响,但是会将界面直接抛到view层,影响界面展示。

因此,如果事务加载到action层,将无法对业务异常等处理。


以上内容仅个人理解,可能有出入,请各位大神指出本人理解是否正确。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值