Spring的声明式事务
侧边栏壁纸
  • 累计撰写 61 篇文章
  • 累计收到 18 条评论

Spring的声明式事务

龙流
2022-09-22 / 0 评论 / 60 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2022年09月28日,已超过568天没有更新,若内容或图片失效,请留言反馈。
声明式事务使用案例

《待补充...》

声明式事务的属性只读、超时、回滚策略
//设置只读事务,该声明式事务中的数据库操作只能是查询,有非查询操作则会报错
//优点:数据库会根据只查询操作进行优化
//设置方法如下,默认为false
@Transactional(readOnly = true)

/**事务超时属性
* 事务在执行过程中,有可能因为遇到某些问题,导致程序卡住,从而长时间占用数据库资源。
* 而长时间占用资源,大概率是因为程序运行出现了问题(可能是Java程序或MySQL数据库或网络连接等等)。
* 此时这个很可能出问题的程序应该被回滚,撤销它已做的操作,事务结束,把资源让出来,让其他正常程序可以执行。
*/
//设置方法如下,默认值为-1
@Transactional(timeout = 3)

/** 事务的回滚策略
* 声明式事务默认只针对运行时异常回滚,编译时异常不回滚。可以通过@Transactional中相关属性设置回滚策略
* rollbackFor属性:需要设置一个Class类型的对象
* rollbackForClassName属性:需要设置一个字符串类型的全类名
* noRollbackFor属性:需要设置一个Class类型的对象
* noRollbackForClassName属性:需要设置一个字符串类型的全类名
*/
//设置方法如下,value值是数组类型,只有一个值时可以大括号可加可不加
@Transactional(noRollbackFor={xxx.calss})
事务的隔离级别

有四种;
1、读未提交:会产生脏读的问题,操作数据行和数据表都会存在该问题
2、读已提交:会产生不可重复读的问题,例如银行卡转账的同时,在ATM机操作取钱;事务1操作时,事务2动作已经执行一半了,但还没有提交,而事务1读取的数据还是事务2没改变的数据
3、可重复读:会产生幻读的问题,指的是操作数据表结果集时会幻读,因为可重复读隔离级别是对数据行加锁,不对表加锁。
4、串行化:隔离级别最高,但效率最低。

0

评论 (0)

取消