12.7.3. トランザクションの開始
この手順では、新しいトランザクションの開始方法を示します。API は、JTA または JTS で設定されたトランザクションマネージャーを実行する場合と同じです。
UserTransaction
のインスタンスを取得します。@TransactionManagement(TransactionManagementType.BEAN)
アノテーションを用いると、JNDI、インジェクション、または EJB のコンテキスト EJB が Bean 管理のトランザクションを使用する場合) を使用してインスタンスを取得できます 。JNDI
new InitialContext().lookup("java:comp/UserTransaction")
注入
@Resource UserTransaction userTransaction;
コンテキスト
- ステートレス/ステートフル Bean の場合
@Resource SessionContext ctx; ctx.getUserTransaction();
- メッセージ駆動型 Bean の場合
@Resource MessageDrivenContext ctx; ctx.getUserTransaction()
UserTransaction
を呼び出します。begin()
データソースに接続した後。... try { System.out.println("\nCreating connection to database: "+url); stmt = conn.createStatement(); // non-tx statement try { System.out.println("Starting top-level transaction."); userTransaction.begin(); stmtx = conn.createStatement(); // will be a tx-statement ... } }
JTSAPI を使用して既存のトランザクションに参加します。
EJB (CMT または BMT のいずれかと使用) の利点の 1 つは、コンテナーがトランザクション処理の内部をすべて管理することです。 そのため、ユーザーは EAP コンテナー間の XA トランザクションまたはトランザクションディストリビューションの一部であるトランザクションを処理する必要がありません。
結果:
トランザクションが開始します。トランザクションをコミットまたはロールバックするまで、データソースの使用はすべてトランザクションになります。
注記
完全な例については、を参照してください。「JTA トランザクションの例」。