Spring @Transactional边界

时间:2011-06-15 20:07:54

标签: java spring

我在服务层使用@Transactional。如果我使用@Transactional注释两个更新服务方法(使用默认设置)并且控制器方法正在调用这两个方法来执行其操作,那么两个服务方法是否都使用相同的事务?

看来他们没有,我正在寻找确认。在我看来,为了让两个方法都使用相同的事务,我需要在服务中编写第三个方法,用@Transactional注释它,然后从那里调用原来的两个方法。

2 个答案:

答案 0 :(得分:13)

你所说的一切都是正确的,包括如何解决这个问题。这可能是实施协调所有其他服务的Facade服务的好时机。这样,使用过的服务将参与Facade服务的交易。

答案 1 :(得分:0)

这对我来说听起来不错。但您还应该考虑这两种方法是否应该具有事务传播的默认设置。请参阅here并确定是否应该'需要'或'支持'? 例如:@Transactional(propagation = Propagation.REQUIRED)