Spring 事务管理问题

来源:互联网 发布:涉密软件开发资质 编辑:程序博客网 时间:2024/06/06 18:09

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


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


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

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


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

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

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


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

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

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

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

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


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