11.7.2.2. 提交事务
此流程演示了如何使用 Jakarta Transactions 进行交易。
先决条件
您必须先开始事务,然后才能提交。有关如何开始交易的详情,请参考开始交易。
对
UserTransaction
调用commit()
方法。当您在
UserTransaction
上调用 commit()方法时,TM 会尝试提交事务。@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(ex); } finally { entityManager.close(); } }
如果使用容器管理事务(CMT),则不需要手动提交。
如果将 Bean 配置为使用容器管理交易,则容器将根据您在代码中配置的注解来管理您的事务生命周期。
@PersistenceContext private EntityManager em; @TransactionAttribute(TransactionAttributeType.REQUIRED) public void updateTable(String key, String value) <!-- Perform some data manipulation using entityManager --> ... }
结果
您的数据源提交和您的事务终止,或者抛出异常。
注意
有关完整示例,请参阅 Jakarta Transactions 交易示例。