参数 | 类型 | 描述 | 可选值 | 参数描述 | 使用方法 |
@Transactional | annotation | spring事务注解 | 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 | |||
value | spring | 可选的限定符指定要使用的事务管理器。 | Transactional Name | 指定事务管理的名字,可以对单个service层指定特定的事务管理,例如订单用订单事务管理,账户用账户事务管理 | Transactional("order")或者Transactional(value="order") order是TransactionManager的名字,指定事务管理用order事务管理,结合配置<tx:annotation-driven/>使用 |
propagation | enum: 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 | |||
isolation | enum: 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 | |||
readOnly | boolean | 读/写vs.只读事务 | TRUE | 只读事务,能提高事务处理性能 | readOnly=true |
FALSE | 非只读事务 | readOnly=false | |||
timeout | int (单位秒) | 事务超时 | 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