当我们用spring annotation方式进行事务管理时,是添加在service层还是dao层好呢?还是在两层都添加好呢?
如果在两层都添加了事务,假如在一service实现类方法里调用两个数据库操作,一旦第一个执行正常,而第二个出现异常,那第一个数据库操作是否会回滚?
如果我们在service层里添加了事务管理,但我们在service层一方法里开始写入了代码事务,并在操作后通过代码方式提交了,一旦在后续数据库操作中出现了异常,这个时候,我们写的代码事务,会回滚吗?
三个问题,希望大家不吝赐教,先谢谢了。。

解决方案 »

  1.   

    肯定是在service加事物嘛,比如在添加一个物品的时候需要同时有记录,这就是两个插入,一个失败,另一个也要回滚,只有在service层才这样
      

  2.   

    一般是在Service层,因为考虑到有可能存在多步操作。dao层一般都是各自负责维护各自的数据对象(表),Service层负责组合操作。在Service层使用事务后,就会保证该Service所操作的所有dao,只要有其中一个出现错误,就全部回滚。
      

  3.   

    事物加在service层,是肯定了。除非你不使用controller ---service ---dao 这样的调用方式。service层是对数据层所有原子操作的调用,所以事物应该加在这。数据库的四个特性,原子性,一个dao方法其实就是一个原子操作。