事务—EJB事务(BMT)

本文介绍了EJB中的Bean管理事务(BMT),对比了BMT与容器管理事务(CMT)的区别,强调了BMT在需要嵌套事务和灵活控制事务边界时的优势。通过代码示例展示了如何使用UserTransaction进行事务控制,包括通过JNDI查找和EJBContext获取UserTransaction。同时,文章还讲解了如何进行跨多个数据库的JTA事务配置。最后,总结了BMT的适用场景及其潜在问题,建议在适当情况下优先考虑CMT。
摘要由CSDN通过智能技术生成

由于CMT依靠容器开始、提交和回滚事务,所以会限制事务的边界位置,并且CMT不支持嵌套事务,Bean管理事务支持嵌套事务,所以需要嵌套事务时可以采用Bean管理事务。同时,BMT允许通过编程的方式来指定事务的开始、提交和回滚的位置。主要使用的是javax.transaction.UserTransaction接口。

BMT事务

如下面代码:

Java代码

    @Stateless)   
    @TransactionManagement(TransactionManagementType.BEAN)                                    
    public class OrderManagerBean {
      
        @Resource                                                         
        private UserTransaction userTransaction;                          

        public void placeSnagItOrder(Item item, Customer customer){   
            try {   
                userTransaction.begin();                                  
                if (!bidsExisting(item)){   
                    validateCredit(customer);   
                    chargeCustomer(customer, item);   
                    removeItemFromBidding(item);   
                }   
                userTransaction.commit();                                  
            } catch (CreditValidationException cve) {                     
                userTransaction.rollback();                               
            } catch (CreditProcessingException cpe){                     
                userTransaction.rollback();                              
            } catch (DatabaseException de) {                            
                userTransaction.rollback();                          
            } catch (Exception e) {   
                e.printStackTrace();   
            }   
        }   
  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值