究竟什么"Propagation.REQUIRES_NEW"意味着使用Spring事务管理?

mei*_*sam 8 spring transactions

我对这个问题的困惑是我们如何使用以前创建的交易?或者换句话说,交易可以与多少线程相关?

Boz*_*zho 17

事务可以在春天只与一个线程相关.好吧,通过一些努力,你可以使它成为一个长期运行的交易,但这是一个反模式的afaik.

REQUIRES_NEW 意味着每当程序流进入带注释的方法时,无论任何现有的事务如何,都将启动新的事务.

REQUIRED 表示现有交易将被重复使用,或者如果没有现有交易,则将启动新交易.

  • 但是,当一个新的交易将被启动而不管任何现有交易时,现有交易会发生什么?它会在新交易开始前立即提交吗?或者它会被回滚?或者将同时进行两笔交易?如果是,那么每个人都将被提交/回滚?在每个交易对应的每个注释方法的末尾? (4认同)
  • **Spring 文档** 说:“*创建一个新事务,如果存在则暂停当前事务。类似于同名的 EJB 事务属性。*” **Java EE 文档** 说:“*如果客户端调用一个事务上下文,容器在启动新事务和调用方法之前挂起事务上下文与当前线程的关联。在方法和新事务完成后,容器恢复挂起的事务关联。* ” (4认同)