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 事务属性。‎
‎请注意,作用域内的事务同步将始终由周围的事务驱动

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

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

(0)
上一篇 2022年8月30日 下午6:36
下一篇 2022年8月30日 下午6:36


相关推荐

  • UML 图之七——构件图

    UML 图之七——构件图一 什么是构件 构件图是什么 nbsp 构件是系统中实际存在的可更换部分 它实现特定的功能 符合一套接口标准并实现一组接口 构件代表系统中的一部分物理实施 包括软件代码 源代码 二进制代码或可执行代码 或其等价物 如脚本或命令文件 每个构件可以单独实现一定的功能 为其他构件提供使用接口 一般构件分为 1 执行文件 源码编译的结果 可直接运行 2 文件 信息存储体 3 库 类

    2026年3月17日
    2
  • 指针函数到函数指针作为函数的返回值

    指针函数到函数指针作为函数的返回值转载自:https://www.cnblogs.com/yangjiquan/p/11465376.html首先说一下指针函数:1.指针函数的定义顾名思义,指针函数即返回指针的函数。其一般定义形式如下:类型名*函数名(函数参数表列);其中,后缀运算符括号”()”表示这是一个函数,其前缀运算符星号”*”表示此函数为指针型函数,其函数值为指针,即它带回来的值的类型为指针,当调用这个函数后,将得到一个”指向返回值为…的指针(地址),”类型名”表示函数返回的指针指向的类…

    2022年6月22日
    28
  • i386和i686的具体定义

    i386和i686的具体定义转自:http://hi.baidu.com/adongwang/blog/item/a4f89c3e5654ad0bbaa167b2.htmli386和i686    现在所有的intel32位体系(包括AMD等兼容CPU)都叫i386体系,包括P4。、i686仍然属于i386体系,不过对CPU(相对于386)的特性作了指令优化。GNU/Linux分为alpha、PowerP

    2022年6月1日
    44
  • JSP程序设计作业

    JSP程序设计作业JSP页面由哪几种主要元素组成?四种元素:普通的HTML标记JSP注释JAVA脚本元素,包括声明、JAVA程序片和JAVA表达式​JSP标记,如指令标记,动作标记和自定义标记。如果有3个用户访问一个JSP页面,该页面中的Java程序片将被执行几次?三次<%!和%>之间声明的变量与<%和%>之间声明的变量有何不同?<%!和%>之间声明的变量在整个JSP页面内都有效,称为JSP页面的成员变量,成员变量的有效范围与标记符号<%!,%…

    2022年6月25日
    32
  • 轻松矿工eth双挖教程_以太坊双挖

    轻松矿工eth双挖教程_以太坊双挖转载:http://www.itdaan.com/blog/2017/08/18/39e9b08528fb1880131378eb625a8790.html无意中发现一款以太坊挖矿神器-ETH超级矿工,支持ETH,ETC+SC等各种双挖(11.7内核)激活成功教程抽水小编无意中发现一款以太坊挖矿神器-ETH超级矿工。这款ETH挖矿软件支持ETH,ETC+SC双挖,经分析内核采用Claymore’s…

    2022年10月15日
    3
  • bootstrap中的glyphicon问题

    bootstrap中的glyphicon问题bootstrapgly 字体图标使用

    2026年3月20日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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