Sping管理事务实现方式

来源:互联网 发布:淘宝代理怎么做步骤 编辑:程序博客网 时间:2024/05/02 00:29
对数据库的操作常常伴随事务处理,当对数据库有增删改操作时,必须将操作纳入事务控制,以下是一些常用事务处理机制。
方法一,利用Spring框架管理事务:
DataSourceTransactionManager txManager = new DataSourceTransactionManager();
txManager.setDataSource(jdbcTemplate.getDataSource());
DefaultTransactionDefinition transactionDefinition = new DefaultTransactionDefinition();
TransactionStatus status = null;
try{
    status = txManager.getTransaction(transactionDefinition);
    //数据库操作开始....
    //......
    //数据库操作完成
    txManager.commit(status);//提交


}catch(Exception e){
    //异常处理
    //回滚事务
    txManager.rollback(status);
}finally{
  //do something

}

方法二,使用@Transactional注解声明方式:org.springframework.transaction.annotation.Transactional

在方法体头部声明@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = Exception.class)

//事务传播属性
@Transactional(propagation=Propagation.REQUIRED) //如果有事务,那么加入事
务,没有的话新建一个(不写的情况下)
@Transactional(propagation=Propagation.NOT_SUPPORTED) //容器不为这个方法
开启事务
@Transactional(propagation=Propagation.REQUIRES_NEW) //不管是否存在事务,
都创建一个新的事务,原来的挂起,新的执行完毕,继续执行老的事务
@Transactional(propagation=Propagation.MANDATORY) //必须在一个已有的事务中
执行,否则抛出异常
@Transactional(propagation=Propagation.NEVER) //必须在一个没有的事务中执
行,否则抛出异常(与Propagation.MANDATORY相反)
@Transactional(propagation=Propagation.SUPPORTS) //如果其他bean调用这个方
法,在其他bean中声明事务,那就用事务.如果其他bean没有声明事务,那就不用事务.

@Transactional(propagation=Propagation.NESTED)//如果没有已定义的Transaction,当前方法新开一个Transaction并在该Transaction中运行。如果存在已定义的Transaction,当前方法在嵌套事务(Nested Transaction)中运行 — 嵌套事务中可以定义储存点,因此可以独立于外部的Transaction而进行rollback。

@Transactional (propagation = Propagation.REQUIRED,readOnly=true) //readOnly=true只读,不能更新,删除

@Transactional (propagation = Propagation.REQUIRED,timeout=30)//设置超时时间

@Transactional (propagation = Propagation.REQUIRED,isolation=Isolation.DEFAULT)//设置数据库隔离级别

@Transactional (rollbackFor = Exception.class)//如果遇到Exception,则回滚当前所有事务



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 狗狗吞食了牙膏怎么办 大猪拉稀不吃食怎么办 猪不发烧不吃食怎么办 天天吃自热米饭怎么办 喝了加热包水怎么办啊 蛋挞没有盒子装怎么办 塑料饭盒盖子被吸住了怎么办 火腿淹的有臭味怎么办 微波炉热饭盖子打不开怎么办 夏天带饭容易馊怎么办? 保温饭盒里有气打不开怎么办 保温饭盒摔了一下打不开怎么办 饭盒跟盖子盖一起打不开怎么办 玻璃杯子盖被水吸住打不开怎么办 电饭煲热剩饭没加水怎么办 微波炉碗盖子吸住了怎么办 微波炉转饭盖子吸住了怎么办 玻璃碗放进微波炉打不开怎么办 乐扣微波炉加热后打不开怎么办 美的微波炉盖子打不开怎么办 美的微波炉门都打不开了怎么办 饭煮好了有异味怎么办 一正常吃饭就胖怎么办 高铁盒饭没15的怎么办 上火车前票丢了怎么办 减肥期吃了汉堡怎么办 寿司店鳗鱼有刺怎么办 吃泡面胃难受该怎么办 吃上火的东西脸上长痘痘怎么办 减肥期间吃撑了怎么办 喝了变质的牛奶怎么办 绿豆糕吃多了会怎么办 小孩抓米饭烫了手怎么办 减肥不来月经了怎么办 吃了馊了的米饭怎么办 饭在冰箱里硬了怎么办 剩米饭反潮了怎么办 吃馊米饭中毒后怎么办? 蒸熟的米饭发黄怎么办 孕妇肉类吃的少怎么办 大米饭坏了吃了怎么办