百度看了一圈各种做法都有,真不知道哪个是正确的...
1. service只能调用自己的dao和调用其他service
2.上层调下层:service统一调用dao,即service之间不引用(说是不同service事务传播效率问题?)
3.service主调自己的dao,看情况调用其他service或其他dao
实际中为了保证事务,大部分是一个service中调用多个dao。service中处理业务逻辑,dao层操作数据库
即使你的service代码里面就是直接调用dao,不做任何其他操作,也劲量别去直接调用dao,
如果涉及到业务变更,如果对业务调用方来说入参和输出并没有改变,你dao的变动,只要改调用dao的service即可;
你要直接调用dao,那就事多了,每一个调用dao的service都要改,多改就意味着出现bug的可能性增加;
至于说的效率问题,但凡看过点事务源码的都知道,aop拦截方法,事务和thread绑定,和你拦截的是service或者是dao,没有啥关系,也就不存在什么效率一说;
但是实际情况下,一般是第三种,毕竟不是谁都会老老实实准备规范,除非review
随意好吧
自己公司开发有时候就是一个service调多个dao,正常来说应该是第一种,不然spring事务的传播属性就没啥用了