我在服务层使用@Transactional。如果我使用@Transactional注释两个更新服务方法(使用默认设置)并且控制器方法正在调用这两个方法来执行其操作,那么两个服务方法是否都使用相同的事务?
看来他们没有,我正在寻找确认。在我看来,为了让两个方法都使用相同的事务,我需要在服务中编写第三个方法,用@Transactional注释它,然后从那里调用原来的两个方法。
答案 0 :(得分:13)
你所说的一切都是正确的,包括如何解决这个问题。这可能是实施协调所有其他服务的Facade服务的好时机。这样,使用过的服务将参与Facade服务的交易。
答案 1 :(得分:0)
这对我来说听起来不错。但您还应该考虑这两种方法是否应该具有事务传播的默认设置。请参阅here并确定是否应该'需要'或'支持'? 例如:@Transactional(propagation = Propagation.REQUIRED)