5.2. 使用 API 方法为回滚配置事务


系统级别错误导致的例外,标记进行回滚的事务。您可以通过注入 TransactionManager 来以编程方式标记事务。

流程

  1. 注入 TransactionManager 并使用 setRollbackOnly 设置回滚的事务:

    在本例中,事务上下文被传播到 @Transactional 方法中嵌套的所有调用(subDAO.addToGiftList ()santaDAO.addToSantaTodoList ())。事务管理器提交事务,除非运行时异常超过方法边界。

    src/main/java/org/acme/SantaClausService.java 示例

    import javax.transaction.Transactional;
    import javax.inject.Inject;
    import javax.transaction.SystemException;
    import javax.transaction.UserTransaction;
    
    @ApplicationScoped
    public class SantaClausService {
    
        @Inject TransactionManager tm; 
    1
    
        @Inject ChildDAO childDAO;
        @Inject SantaClausDAO santaDAO;
    
        @Transactional
        public void getAGiftFromSanta(Child child, String giftDescription) {
            // some transaction work
            Gift gift = childDAO.addToGiftList(child, giftDescription);
            if (gift == null) {
                tm.setRollbackOnly(); 
    2
    
            }
            else {
                santaDAO.addToSantaTodoList(gift);
            }
        }
    }

    1
    注入 TransactionManager,以激活 setRollbackOnly 语义。
    2
    以编程方式决定何时回滚事务。
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部