服务事务中的spring存储库事务
我有一个问题:服务事务中的spring存储库事务,spring,hibernate,transactions,spring-data-jpa,Spring,Hibernate,Transactions,Spring Data Jpa,我有一个问题: spring数据jpa存储库(findAll、save等)中的隐式方法是@Transactional。 因此,在这种情况下: @Transactional public void atomicTransaction() { repository1.save(entity); repository2.save(entity); } 如果repository2#save失败并回滚,它是否会传播到atomicTransaction(),以便Repository1#sa
spring数据jpa存储库(findAll、save等)中的隐式方法是
@Transactional
。
因此,在这种情况下:
@Transactional
public void atomicTransaction() {
repository1.save(entity);
repository2.save(entity);
}
如果repository2#save失败并回滚,它是否会传播到
atomicTransaction()
,以便Repository1#save也回滚?jpa
存储库的save
方法将打开微事务,除非它已经在事务上下文中。在您的例子中,您已经用@Transactional
注释了该方法,因此这意味着它将被视为一个原子工作单元,即它要么完全执行,,要么在出现错误时回滚 是的,这是事务的基本原则之一。那么在save方法中触发回滚的异常是“rethrown”,并在主事务中触发回滚?因为就我所知,必须显式地设置嵌套事务的传播属性know@fooBar我认为这很清楚,但也许不是。在回答中,我说如果您使用事务性方法对该方法进行注释,则不会为save方法创建其他单独的事务。如果发生异常,将回滚此主事务。