我想了解使用Propagation Supports进行 Spring 交易的用法。 Java文档提到如果从事务内调用具有@Transactional(propagation = Propagation.SUPPORTS)的方法,则该方法支持该事务,但是如果不存在任何事务,则该方法将以非事务方式执行。

Propagation.SUPPORTS无关,这已经是 Spring 交易的行为了吗?
public class ServiceBean { @Transactional(propagation = Propagation.SUPPORTS) public void methodWithSupportsTx() { //perform some database operations }}public class OtherServiceBean { @Transactional(propagation = Propagation.REQUIRED) public void methodWithRequiredTx() { //perform some database operations serviceBean.methodWithSupportsTx(); }}
在上面的代码示例中,无论methodWithSupportsTx()是否具有@Transactional(propagation = Propagation.SUPPORTS)注释,它都将在事务中执行,具体取决于methodWithRequiredTx()是否具有@Transactional注释,对吗?

那么,具有传播级别支持的需求/用途是什么?

最佳答案

javadoc:



因此,这意味着,例如,在SessionFactory.getCurrentSession()中多次调用Hibernate的methodWithSupportsTx()将返回同一 session 。

关于带有支持传播的 Spring 交易,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6437828/

10-15 16:24