Spring事务和PersistenceContext

时间:2015-02-21 21:54:39

标签: proxy transactions entitymanager

我有这样的情况:

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

我做了一些研究,但检查一下我是否理解得很好。我有entityManager(交易范围)。方法寄存器是@Transactional,因此这意味着此方法包含在代理中。何时创建持久化上下文?在entityManager.merge ()的第一次调用期间?事务是在方法之后提交的,因为它包含在代理中。那么在提交后会删除持久化上下文吗?

1 个答案:

答案 0 :(得分:1)

如果我错了,请纠正我,但是你正在使用事务范围的entitymanager,所以在每次调用entitymanager时它确保存在持久化上下文,这里entitymanager创建一个新的并使用它来合并 - 并且,如在事务范围内entitymanager,每次提交后都会删除持久化上下文。