我有一个具有propagation = Propagation.REQUIRES_NEW
事务属性的方法:
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void createUser(final UserBean userBean) {
//Some logic here that requires modification in DB
}
此方法可以同时调用多次,并且对于每个事务,如果发生错误,则回滚(独立于其他事务)。
问题是这可能会强制 Spring 创建多个事务,即使另一个事务可用,并且可能会导致一些性能问题。
Java doc ofpropagation = Propagation.REQUIRED
说:Support a current transaction, create a new one if none exists.
这似乎解决了性能问题,不是吗?
回滚问题呢?如果新方法调用在使用现有事务时回滚怎么办?这不会回滚整个事务,即使是以前的调用?
[编辑] 我想我的问题还不够清楚:
我们有数百个客户端连接到我们的服务器。
对于每个客户端,我们自然需要发送有关事务的反馈(OK 或异常 -> 回滚)。
我的问题是:如果我使用REQUIRED
,是否意味着只使用了一个事务,如果第 100 个客户端遇到问题,第一个客户端的事务也会回滚?