transactional

Transactional能入的值

  1. isolation:事务的隔离级别
  2. propagation:事务的传播行为
  3. noRollbackFor:哪些异常事务可以不回滚(输入类型)
  4. noRollbackForClassName:哪些异常事务可以不回滚(输入全类名)
  5. rollbackFor:哪些异常事务需要回滚(输入类型)
  6. rollbackForClassName:哪些异常事务需要回滚(输入全类名)
  7. readOnly:设置事务只读 (默认为false)这个属性只能够使用在查询sql中。
  8. timeout:事务超出指定时间后进行回滚(以秒为单位)

此文章就展示项目架构了项目架构请看此文章

案例

timeout 案例
在这里插入图片描述
错误提示
在这里插入图片描述
readOnly 案例
在这里插入图片描述
错误提示
PreparedStatementCallback; SQL [update balance set price = price - ? where name= ?]; Connection is read-only. Queries leading to data modification are not allowed; nested exception is java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed

在这里插入图片描述
连接是只读的,不允许导致数据修改的查询(修改语句不容许设置为只读)

noRollbackFor 案例
异常分为运行时异常(非检查时异常)和编译时异常(检查时异常)

spring事务中默认行为为运行时异常回滚,编译时异常不回滚
原数据
在这里插入图片描述
运行时异常
在这里插入图片描述
数据
在这里插入图片描述
编译时异常
在这里插入图片描述
数据并没有回滚,证明spring事务中默认编译期事务不回滚
在这里插入图片描述
设置算术异常不回滚
在这里插入图片描述
数据
在这里插入图片描述
发现数据并没有回滚 ,zs 已经扣钱了 ,ls没有加到钱

rollbackFor案例
在这里插入图片描述
数据还是不变
在这里插入图片描述
注意点:rollbackFor设置异常回滚的时候 ,异常不要try - catch掉, try - catch掉的异常事务还是不会进行回滚操作。

isolation
具体的数据库隔离级别请看此文章 隔离级别连接
设置隔离级别
在这里插入图片描述
四种取值
DEFAULT:默认 和当前数据库有关,Oracle默认读已提交,MySQL默认可重复读。
READ_COMMITTED:读已提交
READ_UNCOMMITTED:读未提交
REPEATABLE_READ:可重复读
SERIALIZABLE:串行化

propagation
propagation 事务的传播行为 ,什么是事务的传播行为 ,比如有一个方法a,方法a调用了方法b,其中方法a自己有事务控制,而方法b也有自己的事务,那么方法b使用的事务是谁的,是自己本身,还是a方法的事务,这就是事务的传播行为。

spring提供了七种事务的传播行为
在这里插入图片描述

  1. MANDATORY:当前的方法必须运行在事务内部,如果没有正在运行的事务,就抛出异常

  2. NESTED:如果有事务在运行,当前的方法就应该在这个事务的嵌套事务内运行,否则,就启动一个新的事务,并在它自己的事务内运行

  3. NEVER:当前的方法不应该运行在事务中。如果有运行的事务,就抛出异常

  4. NOT_SUPPORTED:当前的方法不应该运行在事务中。 如果有运行的事务,将它挂起

  5. REQUIRED:如果有事务在运行,当前的方法就在这个事务内运行,否则,就启动一个新的事务,并在自己的事务内运行

  6. REQUIRES_NEW:当前的方法必须启动新事务,并在它自己的事务内运行.如果有事务正在运行,应该将它挂起

  7. SUPPORTS:如果有事务在运行当前的方法就在这个事务内运行,否则它可以不运行在事务中.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值