浏览 5688 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2005-09-23
另外,根据相关文档,几乎所有的类都可以纳入到SPRING的事务机制中,例如STRUTS的ACTION,那么当ACTION中出现异常的时候,事务是整个回滚到ACTION的调用入口吗?假如ACTION中涉及到多个DAO的调用,是回滚所有涉及的DAO操作吗? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2005-09-23
由于在SERVICE层上本身已经有事务支持了,如果ACTION层也有事务支持,那两者是什么关系哪?
|
|
返回顶楼 | |
发表时间:2005-09-27
blackhost 写道 由于在SERVICE层上本身已经有事务支持了,如果ACTION层也有事务支持,那两者是什么关系哪?
service层上有事务支持就可以了,action层不应该有事务支持,通常action层只是调用service层提供的接口,不参与业务逻辑,不需要事务支持,如果你是在action里面直接调用dao的话,那么action层需要事务支持。 个人认为两者都有事务支持是个设计错误 |
|
返回顶楼 | |
发表时间:2005-10-06
blackhost 写道 我们知道,针对DAO bwan的代理是纳入到SPRING的事务容器中的,也就是说他是受事务保护的,但是受保护的是整个类还是类的单个操作方法,比如,方法A调用了方法B,方法A增加了数据,方法B增加了其他数据,这时候B出现异常了,那么根据事务机制要回滚操作,这时候回滚的上限是那里?是B的开始,还是A的开始?
看你对于两个函数配置的事务策略如何。学究点的说法是a,b两个方法是否在同一个事务的context下。 比如如果a,b的配置是PROPAGATION_REQUIRED,那么说明这两个函数都在事务控制下,而且只是需要一个事务,如果当前代码下没有,那么就创建一个,如果有,就使用当前的事务,如果b回滚,a相关代码也回滚。 如果a,b的配置是PROPAGATION_REQUIRES_NEW,那么这两个函数都需要一个新的事务,b所在的context同a的不同,b回滚,a不回滚。 如果某个函数不配置,那么就处于当前事务状态下。 事务隔离类别不止我说的这两种,组合方式也有很多。基本一点事务是建立在函数基础上的,如果是在同一个事务下,即使是不同的类的方法也可以一起回滚(只要数据源一致) blackhost 写道 另外,根据相关文档,几乎所有的类都可以纳入到SPRING的事务机制中,例如STRUTS的ACTION,那么当ACTION中出现异常的时候,事务是整个回滚到ACTION的调用入口吗?假如ACTION中涉及到多个DAO的调用,是回滚所有涉及的DAO操作吗? 要看dao所处的事务是谁创建的,如果action创建事务,所有dao享用,那么一个dao异常,所有dao回滚。如果是某个dao函数创建,其他dao不享用这个事务,那么这个dao异常,自己回滚,其他不受影响 |
|
返回顶楼 | |