Spring事务

事务管理服务有:

1、编程式事务管理:使用JTA UserTransaction对象,通过JNDI获取

2、声明式事务管理:通过使用组件模型(即EJB CMT),这是一种建立在JTA基础设施之上的高层服务

 

使用TransactionTemplate实现编程式的事务声明

//唯一的先决条件是需要获得对PlatformTransactionManager的引用

TransactionTemplate transactionTemplate=(TransactionTemplate)context.getBean("transactionTemplate");

transactionTemplate.execute(new TransactionCallbackWithoutResult() {

protected void doInTransactionWithoutResult(

TransactionStatus status) {

transactionTemplate.setTimeout(transactionTime);//事务超时时间

Map resultMap=new HashMap();

try {

//具体业务逻辑处理流程

} catch (Exception e) {

status.setRollbackOnly();//触发事务回滚

}

}

});

编程式事务模板/回调机制对于很多用途来说都是很方便的,不过,它有三个明显缺陷:

1、处理事务的应用代码应该只抛出非受控异常,以避免导致transactionTemplate.execute方法签名和业务对象方法签名不得不抛出受控异常的问题

2、业务对象方法需要关注事务的处理,容器业务对象也需要关注PlatformTransactionManager接口,尽管不需要关注接口的实现类

3、由于回调接口通常是用匿名内部类来实现的,因此回调接口的使用引入了少量的复杂度。

 

声明式事务管理,可参考:

http://willwen.iteye.com/blog/1976533

 

至于两种方式哪种更好,这个不大好说,就看自己熟悉哪种就采用哪种

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值