请简单介绍Spring支持的常用数据库事务传播属性和事务隔离级别
  TEZNKK3IfmPf 2023年11月13日 18 0

事务传播属性可以在@Transaction注解的propagation属性中定义

传播属性

描述

REQUIRED

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

REQUIRES_NEW

当前的方法必须启动新事务,并在它自己的事务内运行。如果有事务正在运行就将它挂起

SUPPORTS

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

NOT_SUPPORTE

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

MANDATORY

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

NEVER

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

NESTED

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

 

数据库事务并发问题:

脏读:读到一个无效值。

不可重复读:读第二次和第一次的值不一样。

幻读:读第二次比第一次多了很多行数据。

事务隔离级别:

读未提交(READ UNCOMMITTED):允许读取事务未提交的修改

读已提交(READ COMMITTED):在实际的开发中用的最多,oracl的默认隔离级别。要求只能读取已提交的修改

可重复读(REPEATABLE READ):mysql的默认隔离级别。确保可以多次从一个字段读取到相同的值

串行化(SERIALIZABLE):确保可以多次在一个表中读取到相同的行

事务隔离级别越高,性能越低。

mysql支持以上四个隔离级别

orcal只支持2,4.

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年05月31日   25   0   0 mysql
  TEZNKK3IfmPf   2024年05月31日   26   0   0 sqlite数据库
  TEZNKK3IfmPf   2024年05月31日   31   0   0 数据库mysql
  TEZNKK3IfmPf   2024年05月31日   27   0   0 数据库mysql
TEZNKK3IfmPf