spring 事务注解总结

参数类型描述可选值参数描述使用方法
@Transactionalannotationspring事务注解value 可选的限定符指定要使用的事务管理器。value="order"   order是TransactionManager的名字
isolation可选的隔离级别isolation=Isolation.DEFAULT
propagation可选的扩展设置。propagation=Propagation.REQUIRED
rollbackFor从可选的异常类数组中回滚事务rollbackFor=[Exception.class,IO.class]
noRollbackFor从可选的异常类数组中不回滚事务noRollbackFor=[Exception.class,IO.class]
readOnly读/写vs.只读事务readOnly=true   or readOnly=false
rollbackForClassName从可选的异常类名称数组中回滚事务rollbackForClassName=[Exception,IO]
noRollbackForClassName从可选的异常类名称数组中不回滚事务noRollbackForClassName=[Exception,IO]
timeout事务超时timeout=30
valuespring可选的限定符指定要使用的事务管理器。Transactional   Name指定事务管理的名字,可以对单个service层指定特定的事务管理,例如订单用订单事务管理,账户用账户事务管理Transactional("order")或者Transactional(value="order")
    order
TransactionManager的名字,指定事务管理用order事务管理,结合配置<tx:annotation-driven/>使用
propagationenum:   Propagation可选的扩展设置。Propagation.MANDATORY使用当前的事务,如果当前没有事务,就抛出异常propagation=Propagation.MANDATORY
Propagation.NESTED如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作propagation=Propagation.NESTED
Propagation.NEVER以非事务方式执行,如果当前存在事务,则抛出异常propagation=Propagation.NEVER
Propagation.NOT_SUPPORTED以非事务方式执行操作,如果当前存在事务,就把当前事务挂起propagation=Propagation.NOT_SUPPORTED
Propagation.REQUIRED如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择propagation=Propagation.REQUIRED
Propagation.REQUIRES_NEW新建事务,如果当前存在事务,把当前事务挂起。propagation=Propagation.REQUIRES_NEW
Propagation.SUPPORTS支持当前事务,如果当前没有事务,就以非事务方式执行propagation=Propagation.SUPPORTS
isolationenum: Isolation可选的隔离级别。Isolation.DEFAULT这是默认值,表示使用底层数据库的默认隔离级别。isolation=Isolation.DEFAULT
Isolation.READ_COMMITTED该隔离级别表示一个事务只能读取另一个事务已经提交的数据。该级别可以防止脏读,这也是大多数情况下的推荐值isolation=Isolation.READ_COMMITTED
Isolation.READ_UNCOMMITTED该隔离级别表示一个事务可以读取另一个事务修改但还没有提交的数据。该级别不能防止脏读和不可重复读,因此很少使用该隔离级别isolation=Isolation.READ_UNCOMMITTED
Isolation.REPEATABLE_READ该隔离级别表示一个事务在整个过程中可以多次重复执   行某个查询,并且每次返回的记录都相同。即使在多次查询之间有新增的数据满足该查询,这些新增的记录也会被忽略。该级别可以防止脏读和不可重复读isolation=Isolation.REPEATABLE_READ
Isolation.SERIALIZABLE所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读。但是这将严重影响程序的性能。通常情况下也不会用到该级别。
isolation=Isolation.SERIALIZABLE
readOnlyboolean读/写vs.只读事务TRUE只读事务,能提高事务处理性能readOnly=true
FALSE非只读事务readOnly=false
timeoutint   (单位秒)
事务超时
30一个事务允许执行的最长时间,单位秒timeout=30
rollbackFor异常类数组
从可选的异常类数组中回滚事务[Exception.class,IOException.class]事务回滚,异常类数组,可以是一个异常类,也可以指定多个异常类rollbackFor=[Exception.class,IO.class]
rollbackForClassName异常类名称数组从可选的异常类名称数组中回滚事务[Exception,IOException]事务回滚,异常类名字数组,可以是一个异常类名字,也可以是多个异常类的名字rollbackForClassName=[Exception,IO]
noRollbackFor异常类数组
从可选的异常类数组中不回滚事务[Exception.class,IOException.class]事务不回滚,异常类数组,可以是一个异常类,也可以指定多个异常类noRollbackFor=[Exception.class,IO.class]
noRollbackForClassName异常类名称数组从可选的异常类名称数组中不回滚事务[Exception,IOException]事务不回滚,异常类名字数组,可以是一个异常类名字,也可以是多个异常类的名字noRollbackForClassName=[Exception,IO]

转载于:https://my.oschina.net/dbxh/blog/414118

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值