Spring中注解---事务注解 @Transactional中的属性与值

 

@Transactional

修饰范围:类上或方法上

作用:给类中方法加入事务,当类上和方法上同时存在该注解时方法优先

注解属性 含义 属性值 属性值含义
propagation  控制事务传播属性 (默认)Required 需要事务,如果外层没有事务,则开启事务,若果外层有事务则融入当前事务。
Supports 支持事务,如果外层存在事务则融入当前事务,如果外层不存在事务也不会开新的事务
Mandatory 强制事务,必须存在事务,没有事务则报错
Requires_new 每次都会开启一个新的事务,如果外层存在事务,则外层事务挂起。自己新开启一个事务运行,运行完毕后,外层事务恢复
Not_Supportes 不支持事务,如果外层存在事务,外层事务挂起(暂停),自己已非事务的方式运行,运行完成后,恢复外层事务
Never 不能有事务,存在则报错
Nested 嵌套事务,数据库不支持
isolation  控制事务隔离级别 (默认)default 采用数据库自身的隔离级别
Read_Uncommitted 读未提交:一个事务读取到另一个事务没有提交的数据(脏读)
Read_Committed 读已提交:一个事务等另一个事务提交以后才能读数据,有效地避免了脏读现象。(Oracle默认使用)
Repeatable_read 可重复读:一个事务中A多次读取同一条数据(出现幻影读),即使事务B有修改操作,那么事务A读取的数据始终是一致的。(MySQL默认使用)
Serializable 序列化:事务的最高隔离级别,事务已串行的方式执行。解决幻影读现象
timeout  设置超时时间,单位:毫秒 -1 代表永不超时
任意值 是一个大于0的值,代表当前事务执行过程中超时就会报错
rollbackFor  设置遇见什么异常进行回滚,设置java.lang.RuntimeException以及子类异常 如:rollbackFor = NullPointerException.class
noRollbackFor  设置遇见什么异常不进行回滚,设置java.lang.RuntimeException以及子类异常 如:noRollbackFor = IndexOutOfBoundsException.class
readOnly  设置事务是否只读(Oracle不支持这个) true 本次事务只读,不能执行增删改
false 本次事务可读可写

 

 

 

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    

 

posted @ 2022-11-02 01:30  向大海  阅读(76)  评论(0编辑  收藏  举报