0
Q
JPAでの接続
A
答えて
3
JTAデータソースと、その接続上で行われた作業はJTAトランザクションの一部です。つまり、JTAトランザクションを開始してコミットまたはロールバックする必要があります。
これを行う最も簡単な方法は、セッションBean内のJPAの仕事をしていることである:
@Stateless
public class SomeBean {
@PersistenceContext
private EntityManager entityManager;
public void doStuff() {
// … do some stuff
entityManager.persist(someObj);
}
}
この場合、トランザクションはdoStuff()
方法を入力するときに開始し、それを離れるときに終了します。
しかし、あなたは、いくつかの理由のために、(例えばJSF管理対象Bean、サーブレット、サーブレットフィルタ、など)は、あなたが直接APIを使用することができます豆のいくつかの他のタイプに手動で取引を開始する場合:
をpublic class SomeBean {
@Resource
private UserTransaction tx;
public void doStuff() {
try {
tx.begin();
// … do some stuff
entityManager.persist(someObj);
tx.commit();
}
catch (Throwable t) {
tx.rollback();
throw t;
}
}
}
セッションBeanとそのいわゆる宣言型トランザクションの使用は、ほとんどの場合、常に推奨されるアプローチです。