Spring 事务知识
来源:互联网 发布:120首网络歌曲黑名单 编辑:程序博客网 时间:2024/05/24 05:52
1.1 Spring注解的各种行为
事物传播注解:
@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(timeout=30) //默认是30秒
事务隔离级别注解:
@Transactional(isolation = Isolation.READ_UNCOMMITTED)
读取未提交数据(会出现脏读, 不可重复读) 基本不使用
@Transactional(isolation = Isolation.READ_COMMITTED)
读取已提交数据(会出现不可重复读和幻读)
@Transactional(isolation = Isolation.REPEATABLE_READ)
可重复读(会出现幻读)
@Transactional(isolation = Isolation.SERIALIZABLE)
串行化
事务回滚:
Spring的AOP默认对受检异常不自动回滚,对非受检异常自动回滚。
1. 受检异常:Exception(不包含RuntimeException)类及其子类
2. 非受检异常:RuntimeException、Error类及其子类
1.2 Spring注解常用参数
参数名称
参数描述
readOnly
该属性用于设置当前事务是否为只读事务,设置为true表示只读,false则表示可读写,默认值为false。例如:@Transactional(readOnly=true)
rollbackFor
该属性用于设置需要进行回滚的异常类数组,当方法中抛出指定异常数组中的异常时,则进行事务回滚。例如:
指定单一异常类:@Transactional(rollbackFor=RuntimeException.class)
指定多个异常类:@Transactional(rollbackFor={RuntimeException.class, Exception.class})
rollbackForClassName
该属性用于设置需要进行回滚的异常类名称数组,当方法中抛出指定异常名称数组中的异常时,则进行事务回滚。例如:
指定单一异常类名称:
@Transactional(rollbackForClassName="RuntimeException")
指定多个异常类名称:
@Transactional(rollbackForClassName={"RuntimeException","Exception"})
noRollbackFor
该属性用于设置不需要进行回滚的异常类数组,当方法中抛出指定异常数组中的异常时,不进行事务回滚。例如:
指定单一异常类:@Transactional(noRollbackFor=RuntimeException.class)
指定多个异常类:@Transactional(noRollbackFor={RuntimeException.class, Exception.class})
noRollbackForClassName
该属性用于设置不需要进行回滚的异常类名称数组,当方法中抛出指定异常名称数组中的异常时,不进行事务回滚。例如:
指定单一异常类名称:
@Transactional(noRollbackForClassName="RuntimeException")
指定多个异常类名称:
@Transactional(noRollbackForClassName={"RuntimeException","Exception"})
propagation
该属性用于设置事务的传播行为,具体取值可参考上面具体介绍
例如:
@Transactional(propagation=Propagation.NOT_SUPPORTED,readOnly=true)
isolation
该属性用于设置底层数据库的事务隔离级别,事务隔离级别用于处理多事务并发的情况,通常使用数据库的默认隔离级别即可,基本不需要进行设置
timeout
该属性用于设置事务的超时秒数,默认值为-1表示永不超时
- Spring 事务知识
- Spring 事务相关知识
- Spring事务相关知识的记录
- 19、(知识篇)Spring使用事务Transation
- Spring的事务管理和数据库事务相关知识
- 事务:spring事务支持
- 事务:spring事务支持
- spring 事务,事务特性
- Spring事务
- Spring 事务
- Spring事务
- spring事务
- Spring事务
- spring 事务
- spring 事务
- spring事务
- Spring 事务
- spring事务
- 第十三周项目4——Floyd算法验证
- 理解class.forName()
- 第2周项目1 - C/C++语言中函数参数传递的三种方式
- android apk 防止反编译技术-加壳技术
- C_实现字符串截取函数left、mid和right
- Spring 事务知识
- BluetoothDevice.getType()-一个常常被忽略了的函数。好用的不要不要的
- [Object-C] 关于UIView的阴影
- ObjectiveC开发教程--如何判断字符串是否为空的方法
- ZOJ 3203 Light Bulb
- CSS 最核心的几个概念
- 配置双数据源
- jsp页面放到WEB-INF 跟webroot的区别
- CGContext