【发布时间】:2012-02-19 09:47:45
【问题描述】:
如果我有一个服务类连续调用三个其他服务类,并且这些子服务中的每一个都必须在某个时候处理一个 DAO 对象,我该如何让包装服务将它们全部包装到单笔交易?它会像使用@Transactional 注释包装器一样简单吗?如果 DAO 已经标记为 @Transactional 怎么办?
【问题讨论】:
-
顺便说一句——我不认为你的 DAO 是事务性的。在服务级别,您需要操作是原子的。假设您的服务更新了 Person 及其地址,并且更新地址失败。你想回滚整个事情,对吧?所以
@Transactional注释应该只在服务层的入口点。 (尽管正如响应者所说,您可以嵌套@Transactional方法并让它们重用外部事务。)
标签: java hibernate spring transactions dao