Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

12.7.5. トランザクションのコミット

この手順では、Java Transaction API (JTA) を使用してトランザクションをコミットする方法を説明します。

要件

トランザクションは、コミットする前に開始する必要があります。トランザクションの開始方法については、を参照してください。「トランザクションの開始」

  1. 電話するcommit()UserTransaction のメソッド。

    あなたが電話するときcommit()UserTransaction のメソッドである場合、トランザクションマネージャーはトランザクションのコミットを試みます。
    @Inject
    private UserTransaction userTransaction;
    
    public void updateTable(String key, String value)
        EntityManager entityManager = entityManagerFactory.createEntityManager();
        try {
            userTransaction.begin():
            <!-- Perform some data manipulation using entityManager -->
            ...
            // Commit the transaction
            userTransaction.commit();
        } catch (Exception ex) {
            <!-- Log message or notify Web page -->
            ...
            try {
                userTransaction.rollback();
            } catch (SystemException se) {
                throw new RuntimeException(se);
            }
            throw new RuntimeException(e);
        } finally {
            entityManager.close();
        }
    }
    
  2. CMT (Container Managed Transaction) を使用する場合は、手動でコミットする必要はありません。

    Bean がコンテナー管理トランザクションを使用するよう設定すると、コンテナーはコードで設定したアノテーションに基づいてトランザクションライフサイクルを管理します。
    @PersistenceContext
    private EntityManager em;
    
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void updateTable(String key, String value)
      <!-- Perform some data manipulation using entityManager -->
      ...
    }
    

結果

データソースがコミットされ、トランザクションが終了します。 そうでない場合は、例外が発生します。

注記
完全な例については、を参照してください。「JTA トランザクションの例」