12.7.5. トランザクションのコミット
この手順では、Java Transaction API (JTA) を使用してトランザクションをコミットする方法を説明します。
要件
トランザクションは、コミットする前に開始する必要があります。トランザクションの開始方法については、を参照してください。「トランザクションの開始」。
電話する
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(); } }
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 トランザクションの例」。