Spring 事务和 PersistenceContext

Spring transaction and PersistenceContext

我遇到过这样的情况:

@Transactional
@Override
public void register(String username, UserPasswordNew userPasswordNew, UserAccount userAccount) throws UserNameAlreadyExistsException {
    .....
    entityManager.merge(userAccountToSave);
}

我做了一些研究,但如果我理解得很好,请检查我。我有 entityManager(交易范围)。方法寄存器是 @Transactional 所以这意味着这个方法被包裹在代理中。何时创建持久性上下文?在 entityManager.merge () 的第一次调用期间 ??事务在方法之后提交,因为它包装在代理中。所以持久性上下文在提交后被删除了?

如果我错了请纠正我,但是你使用的是事务范围的实体管理器,所以在每次调用实体管理器时它确保持久性上下文存在,这里实体管理器创建一个新的并使用它来合并 - 并且,就像在事务中一样-scoped entitymanager,持久性上下文将在每次提交后删除。