我正在进行容器管理的事务和三个Enterprise Java Bean。第一个bean是其他两个EJBS之间的链接:
@Stateful
public class UserManagement
{
@EJB
UsersFacade usersFacade;
@EJB
UserDetailsFacade userDetailsFacade;
public void addUser()
{
//Point 1
UserEntity ue = new UserEntity();
UserDetailsEntity ude = new UserDetailsEntity();
ue.setDetails(ude);
userFacade.create(ue); //Wrapper around EntityManager.persist method
userDetailsFacade.create(ude); Wrapper around EntityManager.persist method
//Point 2
}
}
问题:addUser()中的所有操作是否都在单个事务中执行(userFacade.create和userDetailsFacade.create)? @TransactionAttribute(TransactionAttributeType.REQUIRED)是否意味着事务开始使用addUser方法,它包含从addUser方法中执行的所有方法。交易在addUser结束的那一刻结束了吗?
如何确保addUser将拥有自己的私有事务(将包含其中的方法),并在方法终止时提交事务。 ?