9.7.3. JTA トランザクションの開始

  1. UserTransaction のインスタンスを取得します。

    @TransactionManagement(TransactionManagementType.BEAN) アノテーションを用いると、 JNDI やインジェクション (EJB が Bean 管理のトランザクションを使用する場合は EJB の EjbContext) を使用してインスタンスを取得できます。
    • JNDI

      new InitialContext().lookup("java:comp/UserTransaction")
    • インジェクション

      @Resource UserTransaction userTransaction;
    • EjbContext

      EjbContext.getUserTransaction()
  2. データソースに接続後、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
            ...
        }
    }
    
結果:

トランザクションが開始します。トランザクションをコミットまたはロールバックするまで、データソースのすべての使用はトランザクション可能です。

注記

全体の例は 「JTA トランザクションの例」 を参照してください。