springMVC项目,多数常规事务配置都喜欢切点切在service上的所有方法,如果所有操作只是针对单个domain进行操作按说也没什么大问题,但是如果涉及到多个domain的操作需要在同一事务中时感觉有点不满足需求。例如:创建A的操作前需要先创建B,删除某个C,如果BC操作失败,A的操作也不需要执行。这种情况是把业务做到某个service中还是单独针对Controller进行事务配置?有什么问题,有什么好的处理方法么
把创建A的方法、创建B的方法和删除C的方法,放到一个方法中,在该方法上加事务注解,捕捉异常时,手动让事务回滚。######回复 @piginthesun : MVC的设计原则,最好处理业务逻辑的时候进行事务的控制,controller只是控制层。######回复 @wangaowell : 框架本来都是把事务配置在service中的所有方法(话说为什么不能在Contoller控制事务),如果再在Controller中配置事务,就形成了嵌套事务,不知道会不会有问题######回复 @piginthesun : 一般不建议 在Controller中 控制事务######回复 @piginthesun : 在service类的方法中,单独使用注解######是在Contoller的方法中单独使用注解或者编程式事务么######创建B、删除C、 创建A三个数据库方法在DAO层,然后在service层在一个方法里顺序调用,然后在这个方法上使用事务注解
######只要单个数据源事务控制,都很简单,就放在一个service事务里就可以了,事务本身具有传播性的。注解形式,xml配置形式,编程式,只是方式不一样######缺省情况下,如果没有事务,则启动新事务,如果已经有了事务,则使用当前事务。所以不用担心不同service和Dao的嵌套调用问题。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。