文档章节

spring 事务控制

LYQ1990
 LYQ1990
发布于 2016/04/19 15:44
字数 275
阅读 8
收藏 0

一、Spring中事务的配置(applicationContext.xml)

<!-- 事务配置 -->
<bean id="transactionManager"
     
  class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory"ref="sessionFactory"/>
</bean>
<!-- 使用annotation定义事务 在要加事务的类或方法上加注解

@Transactional(propagation=Propagation.REQUIRED)-->
<tx:annotation-driven transaction-manager="transactionManager"/>

说明 @Transactional加在 类上,此类里面的所有public方法都有事务管理

       @Transactional加在 方法上,事务只作用于此方法

二、在service加try导致事务不回滚   【注明:一般service不要加 try】

public class UserServiceImpl{

  public void saveUser(){

   try {
         User user=new User();

          User.setName(“张三”);

      
           int a=1/0;       //出异常,不会回滚,数据保存到数据库
    }catch(Exception e){

          e.printStackTrace();

         //throw new RuntimeException()

   }

}

三、解决方案 

方法1:

 在 service不加try,

方法2:

 在catch语句中最后增加throw new RuntimeException()语句 

方法3:

在service层方法的catch语句中增加:
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();语句,手动回滚 

四、总结

默认
spring事务只在发生未被捕获的 runtimeexcetpion时才回滚。  

换句话说在service的方法中不使用try catch
或者在catch中最后加上throw new runtimeexcetpion(
),这样程序异常时才能被aop捕获进而回滚

© 著作权归作者所有

LYQ1990
粉丝 9
博文 238
码字总数 206220
作品 0
东城
私信 提问
Hasor JDBC 的难关,嵌套事务处理思路

本文存属提醒我自己不要忘记的事情。也是向大家展示 Hasor 对于 JDBC 方面即将的又一个重大的进步。目前该方案还在实施中。 前段时间闲着没事分析了下 Spring JDBC ,觉得 Spring JDBC 的设计...

哈库纳
2013/12/29
1K
9
在SSH框架中使用Spring的好处

在SSH框假中spring充当了管理容器的角色。我们都知道Hibernate用来做持久层,因为它将JDBC做了一个良好的封装,程序员在与数据库进行交互时可以不用书写大量的SQL语句。Struts是用来做应用层...

空_明
2013/03/06
408
0
Spring 事务提交回滚源码解析

前言 在上篇文章 Spring 事务初始化源码分析 中分析了 Spring 事务初始化的一个过程,当初始化完成后,Spring 是如何去获取事务,当目标方法异常后,又是如何进行回滚的,又或是目标方法执行...

TSMYK
01/20
1K
2
spring在SSH框架中的作用

从网上了搜了下sring 在ssh中起的作用,在百度知道上看到下面的回答,觉得简单移动,记录下来备查,原文地址: http://zhidao.baidu.com/link?url=JiONrax-Flkpi5hqsg1HQOrMm1Dk8U1WT88l5T0...

北方攻城师
2014/08/02
310
0
脱离 Spring 实现复杂嵌套事务,之五(SUPPORTS - 跟随环境)

本文是<实现 Spring 的事务控制>系列文章中一篇。本文假设读者已经阅读并理解《实现 Spring 的事务控制,之一(必要的概念)》文中所涉及的概念(当前连接、引用计数),以及数据库连接的(n...

哈库纳
2014/02/17
3K
1

没有更多内容

加载失败,请刷新页面

加载更多

分布式协调服务zookeeper

ps.本文为《从Paxos到Zookeeper 分布式一致性原理与实践》笔记之一 ZooKeeper ZooKeeper曾是Apache Hadoop的一个子项目,是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它...

ls_cherish
今天
4
0
redis 学习2

网站 启动 服务端 启动redis 服务端 在redis 安装目录下 src 里面 ./redis-server & 可以指定 配置文件或者端口 客户端 在 redis 的安装目录里面的 src 里面 ./redis-cli 可以指定 指定 连接...

之渊
昨天
2
0
Spring boot 静态资源访问

0. 两个配置 spring.mvc.static-path-patternspring.resources.static-locations 1. application中需要先行的两个配置项 1.1 spring.mvc.static-path-pattern 这个配置项是告诉springboo......

moon888
昨天
4
0
hash slot(虚拟桶)

在分布式集群中,如何保证相同请求落到相同的机器上,并且后面的集群机器可以尽可能的均分请求,并且当扩容或down机的情况下能对原有集群影响最小。 round robin算法:是把数据mod后直接映射...

李朝强
昨天
4
0
Kafka 原理和实战

本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/bV8AhqAjQp4a_iXRfobkCQ 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平...

vivo互联网技术
昨天
24
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部