当前位置: 首页 > news >正文

Spring-事务属性

1.隔离属性

数据库对于隔离属性的支持

隔离属性的值MySQLOracle

ISOLATION.READ_COMMITTED

    √    
ISOLATION.REPEATABLE_READ×
ISOLATION.SERIALIZABLE

Oracle不支持REPEATABLE_READ值 如何解决不可重复度

采用的多版本比对的方式 解决不可重复读

 默认隔离属性

ISOLATION_DEFAULT:会调用不用数据库设置的默认隔离属性

MySQL:REPEATABLE_READ

Oracle:READ_COMMITED

查看默认的隔离属性

MySQL

select @@tx_isolation 

Oracle

隔离属性在实战中的建议

 推荐使用Spring指定的ISOLATION_DEFAULT

1.MySQL: repeatable_read

2.Oracle:     read_commited

未来实战中,并发访问情况 很低


如果真遇到并发问题

乐观锁

 2.传播属性(PROPAGATION)

传播属性的概念

概念:描述了事务解决嵌套问题的特征

什么叫事务的嵌套:指的是一个大的事务中,包含了若干小的事务

问题:大事务中融入了很多小的事务,他们彼此影响,最终会导致外部大的事务,丧失了事务的原子性

举例:

示例场景(银行转账):

  1. 外层事务:A 向 B 转账 100 元

    • 从 A 账户扣款 100

    • 向 B 账户增加 100

  2. 内层事务:记录交易日志(独立提交)

    • 写入日志表 "A 转 100 给 B"(立即提交,不可回滚)

  3. 外层事务后续检查:发现 A 账户余额不足,触发回滚

    • A 和 B 的金额恢复原状

    • 但日志记录已提交,无法撤销

  • 资金状态回滚(转账未实际发生)

  • 日志却保留(与实际数据不一致)

  • 违反原子性(事务未整体成功或失败)

 传播属性的值以及用法

 

 Spring默认的传播属性的值

REQUIRED是传播属性的默认值

 推荐传播属性的使用方式

增删改 方法:默认值

查询 操作现实的设置为SUPPORTS

 

 3.只读属性(readOnly)

针对只进行查询操作的业务方法,可以加入只读属性,提高运行效率(可以避免加锁操作

默认值是false

 4.超时属性

事务等待的最长时间

1.为什么进行等待?

        当前事务访问数据时,有可能访问的数据被别的事务进行加锁的处理,那么此事务必须被等待。

2.等待时间 秒

3.@Transactional(timeout=2)

4.超时属性默认-1 最终由对应数据库指定

 5.异常属性

Spring处理过程中

默认 对于RuntimeException及其子类 采用的是回滚的策略

默认 对于Exception及其子类 采用提交的策略


rollbackFor={java.lang.Exception.class} (少用)
noRollbackFor(java.lang.RuntimeException) 设置不回滚 (少用)

5.事务属性常见配置总结

1.隔离属性 默认值

2.传播属性 Required(默认值) 增删改 Supports 查询操作

3.只读属性 readOnly false 增删改 true 查询操作

4.超时属性 默认值 -1

5.异常属性 默认值

增删改

@Transactional

查询操作

@Trasactional(propagation=Propagation.SUPPORTS,readOnly=true)

 


http://www.mrgr.cn/news/96666.html

相关文章:

  • Axure项目实战:智慧运输平台后台管理端-承运商管理(中继器筛选)
  • 博客学术汇测试报告
  • Android:Dialog的使用详解
  • ffmpeg滤镜使用
  • 音频进阶学习二十四——IIR滤波器设计方法
  • VUE3+Mapbox-GL 实现鼠标绘制矩形功能的详细代码和讲解
  • NVR接入录像回放平台EasyCVR视频融合平台城市/乡镇污水处理厂解决方案
  • 蓝桥杯专项复习——二分查找、二分答案
  • Laravel APP_KEY 生成方法
  • 力扣每日一题:2712——使所有字符相等的最小成本
  • 苍穹外卖项目结构
  • 网络架构搭建中的 QinQ 与端口安全策略
  • DAY 32 leetcode 242--哈希表.有效的字母异位词
  • Oracle数据库数据编程SQL<3.5 PL/SQL 存储过程(Procedure)>
  • 魔改chromium——基础环境搭建
  • Open GL ES ->GLSurfaceView在正交投影下的图片旋转、缩放、位移
  • OpenCV图像输入输出模块imgcodecs
  • 什么是 CSSD?
  • OCCT(2)Windows平台编译OCCT
  • OpenCV图像输入输出模块imgcodecs(imwrite函数的用法)