コンテナ管理のトランザクションと 3 つの Enterprise Java Beans があります。最初の Bean は、他の 2 つの EJB 間のリンクです。
@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 が独自のプライベート トランザクション (その中のメソッドを含む) を持ち、メソッドが終了したときにトランザクションがコミットされることを確認する方法。?