spring事务隔离级别、传播机制以及简单配置_mysql查看事务隔离级别

spring事务隔离级别、传播机制以及简单配置_mysql查看事务隔离级别org.springframework.transactionpublicinterfaceTransactionDefinition定义符合Spring的事务属性的接口。基于类似于EJBCMT属性的传播行为定义。‎‎注意,除非启动实际的新事务,否则不会应用隔离级别和超时设置。‎‎仅‎PROPAGATION_REQUIRED,PROPAGATION_REQUIRES_NEWandPROPAGATION_NESTED‎可能导致这种情况,在其他情况下指定这些设置通常没有意义。此外

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

org.springframework.transaction

public interface TransactionDefinition
定义符合 Spring 的事务属性的接口。基于类似于 EJB CMT 属性的传播行为定义。‎
注意,除非启动实际的新事务,否则不会应用隔离级别和超时设置。‎ ‎仅‎ PROPAGATION_REQUIRED, PROPAGATION_REQUIRES_NEW and PROPAGATION_NESTED ‎可能导致这种情况,在其他情况下指定这些设置通常没有意义。此外,并非所有事务管理器都支持这些高级功能,因此在给定非默认值时可能会引发相应的异常。‎

read-only flag ‎适用于任何事务上下文,无论是由实际资源事务支持还是在资源级别以非事务方式运行。在后一种情况下,该标志将仅适用于应用程序中的托管资源,‎ ‎例如‎ Hibernate Session.

隔离级别

隔离级别 描述‎
ISOLATION_DEFAULT 使用基础数据存储的默认隔离级别。
ISOLATION_READ_COMMITTED 指示防止脏读;可能发生非可重复读取和幻像读取。
ISOLATION_READ_UNCOMMITTED ‎指示可能发生脏读、非可重复读取和幻像读取。‎
ISOLATION_REPEATABLE_READ ‎指示防止脏读和非可重复读;可能会发生幻像读取。‎
ISOLATION_SERIALIZABLE ‎指示防止脏读、非可重复读取和幻像读取。‎

ISOLATION_READ_COMMITTED

表示防止脏读;可能发生非可重复读取和幻像读取。‎
‎此级别仅禁止事务读取包含未提交更改的行。‎

ISOLATION_READ_UNCOMMITTED

表示可能发生脏读、非可重复读取和幻像读取。‎
‎此级别允许一个事务更改的行在提交该行中的任何更改之前由另一个事务读取(“脏读取”)。如果回滚任何更改,则第二个事务将检索到无效行。

ISOLATION_REPEATABLE_READ

‎表示防止脏读和非可重复读;可能会发生幻像读取。‎
‎此级别禁止事务读取包含未提交更改的行,并且还禁止以下情况:一个事务读取行,第二个事务更改行,第一个事务重新读取行,第二次获取不同的值(“不可重复读取”)。‎

ISOLATION_SERIALIZABLE

‎表示防止脏读、非可重复读取和幻像读取。‎
‎此级别包括‎‎ISOLATION_REPEATABLE_READ‎‎中的禁止,并进一步禁止以下情况:一个事务读取满足某个条件的所有行,第二个事务插入满足该条件的行,第一个事务针对同一条件重新读取,在第二次读取中检索其他“幻像”行

传播行为

传播行为 描述‎
PROPAGATION_REQUIRED 支持当前事务;如果不存在,请创建一个新。‎
PROPAGATION_REQUIRES_NEW ‎创建新事务,暂停当前事务(如果存在)。‎
PROPAGATION_NESTED 如果当前事务存在,则在嵌套事务中执行,否则行为‎‎类似于PROPAGATION_REQUIRED‎‎。‎
PROPAGATION_NEVER 不支持当前事务;如果当前事务存在,则引发异常。‎
PROPAGATION_SUPPORTS ‎支持当前事务;如果不存在,则以非事务方式执行。‎
PROPAGATION_NOT_SUPPORTED 不支持当前事务;而是始终以非事务性方式执行。‎
PROPAGATION_MANDATORY 支持当前事务;如果当前事务不存在,则引发异常。‎

PROPAGATION_REQUIRED

‎支持当前事务;如果不存在,请创建一个新。类似于同名的 EJB 事务属性。‎
‎这通常是事务定义的默认设置,通常定义事务同步作用域。‎

PROPAGATION_REQUIRES_NEW

‎创建新事务,暂停当前事务(如果存在)。类似于同名的 EJB 事务属性。‎
‎注意:‎‎实际的事务暂停不会在所有事务管理器上开箱即用。这尤其适用于‎‎JtaTransactionManager‎‎,它要求将其提供给它(在标准Java EE中是特定于服务器的)。‎javax.transaction.TransactionManager

‎作用域始终定义自己的事务同步。现有同步将被挂起并相应地恢复。

PROPAGATION_NESTED

‎如果当前事务存在,则在嵌套事务中执行,否则行为‎‎类似于PROPAGATION_REQUIRED‎‎。EJB 中没有类似的功能。‎
‎注意:‎‎实际创建嵌套事务仅适用于特定的事务管理器。开箱即用,这仅适用于在处理 JDBC 3.0 驱动程序时的 JDBC ‎‎DataSourceTransactionManager‎‎。某些 JTA 提供程序可能也支持嵌套事务。

PROPAGATION_NEVER

‎不支持当前事务;如果当前事务存在,则引发异常。类似于同名的 EJB 事务属性。‎
‎请注意,事务同步在某个范围内‎‎不可用‎‎。

PROPAGATION_SUPPORTS

‎支持当前事务;如果不存在,则以非事务方式执行。类似于同名的 EJB 事务属性。‎
‎注意:对于具有事务同步功能的事务管理器‎, PROPAGATION_SUPPORTS ‎与完全没有事务略有不同,因为它定义了同步可能适用的事务范围。因此,相同的资源‎ (a JDBC Connection, a Hibernate Session, etc) ‎将在整个指定范围内共享。注意,确切的行为取决于事务管理器的实际同步配置!‎

‎一般而言,使用‎ PROPAGATION_SUPPORTS ‎用心!特别是,不要依赖‎ PROPAGATION_REQUIRED or PROPAGATION_REQUIRES_NEW ‎在‎ PROPAGATION_SUPPORTS‎作用域(这可能会导致运行时的同步冲突)。如果这种嵌套是不可避免的,请确保适当地配置事务管理器(通常切换到“实际事务上的同步”)。‎

PROPAGATION_NOT_SUPPORTED

‎不支持当前事务;而是始终以非事务性方式执行。类似于同名的 EJB 事务属性。‎
‎注意:‎‎实际的事务暂停不会在所有事务管理器上开箱即用。这尤其适用于‎‎JtaTransactionManager‎‎,它要求将其提供给它(在标准Java EE中是特定于服务器的)。‎javax.transaction.TransactionManager

‎请注意,事务同步在某个范围内‎‎不可用‎‎。现有同步将被挂起并相应地恢复。

PROPAGATION_MANDATORY

‎支持当前事务;如果当前事务不存在,则引发异常。类似于同名的 EJB 事务属性。‎
‎请注意,作用域内的事务同步将始终由周围的事务驱动

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/179052.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • mysql锁机制_类加载机制的作用和过程

    mysql锁机制_类加载机制的作用和过程Mysql锁:在多线程当中如果想保证数据的准确性是如何实现的呢?没错,通过同步实现。同步就相当于是加锁。加了锁以后有什么好处呢?当一个线程真正在操作数据的时候,其他线程只能等待。当一个线程执行完毕后,释放锁。其他线程才能进行操作!那么我们的MySQL数据库中的锁的功能也是类似的,处理事务的隔离性中,可能会出现脏读、不可重复读、幻读的问题,所以,锁的作用也可以解决这些问题!在数据库中,数据是一种供许多用户共享访问的资源,如何保证数据并发访问的一致性、有效性,是所有数据库必须解决的一个问题,

  • oracle字符串拼接

    一、“||”拼接类似于“+”号二、CONCAT()函数除了“||”,Oracle还支持使用CONCAT()函数进行字符串拼接,但是只支持两个字符:三、多个CONCAT()函数嵌套如果需要拼接多个字符串,可以进行嵌套:…

  • mybatis逆向工程配置文件_mybatis逆向工程多表查询

    mybatis逆向工程配置文件_mybatis逆向工程多表查询mybatis逆向工程很早之前有用过,但是一直没有整理使用步骤,今天来回顾下在idea下springboot中整合mybatis逆向工程的实现步骤什么是逆向工程?所谓mybatis逆向工程,就是mybatis会根据我们设计好的数据表,自动生成pojo、mapper以及mapper.xml。本文将介绍两种方式实现mybatis的逆向工程。generatorConfig.xml配置文件配置数据…

  • 汉罗塔问题_6层汉诺塔最少步骤

    汉罗塔问题_6层汉诺塔最少步骤Hanoi汉诺塔是一个发源于印度的益智游戏,也叫河内塔。相传它源于印度神话中的大梵天创造的三个金刚柱,一根柱子上叠着上下从小到大64个黄金圆盘。大梵天命令婆罗门将这些圆盘按从小到大的顺序移动到另一根柱子上,其中大圆盘不能放在小圆盘上面。当这64个圆盘移动完的时候,世界就将毁灭。好吧上面这个东西是我直接百度copy的.这个源自孤古印度的游戏,还是有点意思的,也和递归扯上关系.但是我不明白…

    2022年10月12日
  • Qt中QMap键值对基本用法(键值对)

    Qt中QMap键值对基本用法(键值对)本文主要总结Qt中键值对QMap的基本用法。1.1原型讲解QMap是一个键值对类,跟标准C++的map类基本类似,声明原型如下:QMap<T1,T2>map1T1为键值对中的键key,T2为键值对中的值。通过键值对中的键可以搜索到值。一般来说,键值对中的键是唯一的,不可重复,而值没有要求,可以重复。并且QMap具有自动排序功能,对输入的键进行排序。1.2下面是一…

  • 通过label点击触发隐藏input:file上传文件或者图片[通俗易懂]

    通过label点击触发隐藏input:file上传文件或者图片

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号