spring的事务管理应该针对业务逻辑组件的方法还是DAO的方法?
问题描述:
新人发问, 我看了很多关于配置事务管理的帖子, 大家好像都是针对为DAO的方法配置事务管理, 比如insert啊find啊之类的方法, 可是我觉得应该为业务逻辑组件的方法配置事务才对啊~ 因为无论是从线程安全来考虑, 还是从原子操作来考虑, 都应该把业务逻辑的方法当作一个事务才对啊, 比如我有一个操作叫转帐, 需要从A户口减钱, 然后B户口加钱, 需要调用两次DAO的方法, 如果只配置DAO的方法, 那么如果A减钱之后, B加钱的过程中操作失败, 那就回滚不到原来状态了啊, A的钱白减了啊...求解...
答
是啊事务边界当然是service层啊,这样service的每个方法都是一个事务了。
因为与客户交互的一般都是从服务层里面调用的方法来响应事件的,这样更体现了事务的优点。
当人也有人在Dao的实现层配置事务管理,但我建议不要使用这种方法。
答
事务边界当然在 service 层了.
@Service
@Transactional
public class MyXXService {
}
这样service的每个方法都是一个事务了
答
确实如上所述
答
么有争议的问题,纯蹭分