【发布时间】:2010-01-28 12:35:47
【问题描述】:
我读到 EJB 2.x 规范不支持嵌套事务。 但逻辑上认为我们可以从另一个 EJB 方法调用具有 REQUIRES_NEW txn 属性的 EJB 方法,该方法实际上启动了一个事务 这不是一个有效的案例。如果有效,这不是所谓的嵌套事务。
如果我在这里遗漏了什么,请指出我。
【问题讨论】:
标签: java jakarta-ee transactions ejb
我读到 EJB 2.x 规范不支持嵌套事务。 但逻辑上认为我们可以从另一个 EJB 方法调用具有 REQUIRES_NEW txn 属性的 EJB 方法,该方法实际上启动了一个事务 这不是一个有效的案例。如果有效,这不是所谓的嵌套事务。
如果我在这里遗漏了什么,请指出我。
【问题讨论】:
标签: java jakarta-ee transactions ejb
REQUIRES_NEW 传播方式:
创建一个新事务,暂停 当前交易(如果存在)。
因此事务不会被嵌套 - 第一个事务被挂起,被分流,并开始一个新的、不相关的事务。
您实际上并不需要嵌套事务本身,您只需要确保每次通过事务边界时,都继承现有事务(或启动新事务)。默认传播PROPAGATION_REQUIRED 一般就够用了。
有趣的是,JDBC 3.0 确实引入了嵌套事务的概念,但 EBJ 规范还没有赶上。
【讨论】: