首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Owen's World

    tp5事务操作

    使用事务处理的话,需要数据库引擎支持事务处理。比如 MySQL 的 MyISAM 不支持事务处理,需要使用 InnoDB 引擎。 使用 transaction 方法操作数据库事务,当发生异常会自动回滚,例如: 自动控制事务处理 Db::transaction(function(){ Db::table('think_user ')->find(1); Db::table('think_user')->delete(1); }); 复制代码 也可以手动控制事务,例如: // 启动事务 Db::startTrans(); try{ Db::table('think_user')->find(1); Db::table('think_user')->delete(1); // 提交事务 Db ::commit(); } catch (\Exception $e) { // 回滚事务 Db::rollback(); } class HotWordModel extends

    73420编辑于 2021-12-08
  • 来自专栏夕阳醉了

    Redis从入门到放弃(5):事务

    1、事务的定义 Redis的事务提供了一种“将多个命令打包, 然后一次性、按顺序地执行”的机制。 redis事务的主要作用就是串联多个命令防止别的命令插队。 但是,事务并不具有传统数据库事务的特性,如回滚。 2、事务命令 Redis中的事务可以通过以下命令来执行: MULTI:用于开启一个事务块,表示之后的命令将被放入事务队列中,但并不会立即执行。 事务命令:在MULTI和EXEC之间的所有命令都将被添加到事务队列中。 EXEC:用于执行事务队列中的所有命令。执行事务后,事务队列会被清空。 DISCARD:用于取消事务,清空事务队列中的命令。 例如,两个客户端在同一时间开始一个事务,他们都对同一个键的值进行了修改,但在执行事务的EXEC命令时,只能有一个客户端的事务能够成功,另一个客户端的事务会因为键的值发生了改变而执行失败。 (TX)> EXEC 1) (integer) 11 客户端2: 127.0.0.1:6379(TX)> INCR key QUEUED 127.0.0.1:6379(TX)> exec (nil) 5、

    75040编辑于 2023-10-16
  • 来自专栏OY_学习记录

    Spring5之事务的操作

    一、事务的操作(事务的概念) 1、事务 事务是数据库操作的基本单元,逻辑上的一组操作,要么都成功,如果一个失败所有的操作都失败 典型场景:银行转账 lucy 转账 100 元 给 mary lucy 少 (Spring 事务管理介绍) 1、事务添加到 JavaEE 三层结构里面 Service 层(业务逻辑层) 2、在 Spring 进行事务管理的操作 有两种方式:编程式事务管理和声明式事务管理(使用) 3、声明式事务管理 基于注解方式(使用) 基于 xml 配置文件方式 4、在 Spring 进行声明式事务管理,底层使用 AOP 原理 5、Spring 事务管理 API 提供一个接口,代表事务管理器 ,默认设置是:-1,设置时间以秒单位进行计算 5、readOnly: 是否只读 读:查询操作, 写:添加修改删除操作 readOnly 默认值 false,表示可以查询,可以添加修改删除操作 设置 readOnly --配置切入点--> <aop:pointcut id="pt" expression="execution(*com.atguigu.spring<em>5</em>.service.UserService.*(..

    63830编辑于 2022-03-12
  • 来自专栏跟着阿笨一起玩NET

    .Net中的5种事务总结

    因此掌握事务处理的方法是很重要,进我的归类在.net中大致有以下4种事务处理的方法。大家可以参考一下,根据实际选择适当的事务处理。 1、SQL事务     sql事务是使用SQL server自身的事务:在存储过程中直接使用Begin Tran,Rollback Tran,Commit Tran实现事务: 优点:执行效率最佳 限制: 事务:可自动提升事务为完全分布式事务的轻型(本地)事务。           ASP.NET页面事务的优势和限制如下。     l限制:页面的所有代码都是同一个事务,这样的事务可能会很大,而也许我们需要的是分开的、小的事务实现在Web层。 5、ASP.net web 服务事务 略……

    95710发布于 2018-09-18
  • 来自专栏java开发的那点事

    05-Spring5 事务管理

    100元 正常的代码流程是没有问题的 修改UserService模拟异常 public void accountMoney(){ userDao.reduce(); int i = 5/ (); int i = 5/0; userDao.add(); // 3:没有异常 提交事务 } catch (Exception e) { void accountMoney() { userDao.reduce(); int i = 5 / 0; userDao.add(); } @Transactional 这个注解可以添加到类上 5)PROPAGATION_NOT_SUPPORTED ,这个也可以从字面得知,not supported ,不支持,当前级别的特点就是上下文中存在事务,则挂起事务,执行当前逻辑,结束后恢复上下文的事务 嵌套是子事务套在父事务中执行,子事务是父事务的一部分,在进入子事务之前,父事务建立一个回滚点,叫save point,然后执行子事务,这个子事务的执行也算是父事务的一部分,然后子事务执行结束,父事务继续执行

    72010编辑于 2021-12-14
  • 来自专栏Java技术分享

    SpringBoot第5小节:事务管理

    同时操作1条或多条数据时,建议给方法加个@Transactional,查询的时候不用加事务。

    77660发布于 2018-04-04
  • 来自专栏火属性小虫

    SpringCloud进阶(5)–Seata分布式事务

    SpringCloud进阶(5)–Seata分布式事务 在分布式环境下,很多时候我们也需要事务的使用,如购入下单,我们可能需要经过库存服务、订单服务、用户账户服务多个步骤,如果没有事务加持,很有可能会出错 整个过程中的参与者一共有两个角色,一个是事务的执行者,一个是事务的协调者,整个事务的运作都需要依靠协调者来维持。 在准备和提交阶段,会进行: 准备阶段: 一个分布式事务是由协调者开启的,首先协调者会向所有事务执行者发送事务内容,等待所有事务执行者答复。 各个事务执行者开始执行事务操作,但是不进行提交,并将undo和redo信息记录到事务日志 如果事务执行者执行事务成功,那么告诉协调者成功,否则告诉协调者失败,不能提交事务。 如果至少有一个执行者返回失败或者超时,那么所有的执行者都会回滚,分布式事务执行失败。 这个方式比较简单,但也存在几个问题: 事务协调者是非常核心的角色,一旦出现问题,将导致分布式事务不能正常运行。

    42010编辑于 2024-02-07
  • 来自专栏golang算法架构leetcode技术php

    golang源码分析:dtm分布式事务(5)

    saga模式是将一个大事务拆分成几个小的分支事务,然后依次执行每一个事务,如果出现异常,逆序回滚每一个分支事务。 range t.Steps { for _, op := range []string{dtmimp.OpCompensate, dtmimp.OpAction} { 针对分支事务的所有步骤 然后看下事务处理的接口 ,这里实现了saga模式的核心逻辑。 rollbacked(2 * next) { return false } } return true 5,定义函数asyncExecBranch异步执行分支 AddBranchOrder(branch int, preBranches []int) *Saga { 指定当前分支 func (s *Saga) SetConcurrent() *Saga { 提交分支事务

    78510编辑于 2023-03-01
  • 来自专栏Java知识点

    Spring5学习笔记Spring事务处理

    什么是事务属性呢? 事务属性可以理解成事务的一些基本配置,描述了事务策略如何应用到方法上。 事务属性包含了 5 个方面: 隔离级别 传播行为 回滚规则 是否只读 事务超时 TransactionDefinition 接口中定义了 5 个方法以及一些表示事务属性的常量比如隔离级别、传播行为等等 int PROPAGATION_REQUIRES_NEW = 3; int PROPAGATION_NOT_SUPPORTED = 4; int PROPAGATION_NEVER = 5; dataSourceTransactionManager" proxy-target-class="true"/> 进行动态代理底层实现的切换 proxy-target-class 默认 false JDK true Cglib # 5. 等待时间 秒 如何应用 @Transactional (timeout=2) 超时属性的默认值 -1 最终由对应的数据库来指定 # 5.

    51120编辑于 2023-09-09
  • 全面解析MySQL(5)——“索引、事务、JDBC”三大核心

    ,用于在事务执行过程中创建标记点,以便在需要时回滚到该标记点而非整个事务起点 begin; insert into demo1 values (5,"田七"); #设置保存点A savepoint :事务只能读取已提交的数据变更,避免脏读 常见问题:事务A针对某条数据进行查询,然后事务B对这条数据进行修改,当事务A再次查询该数据时会得到事务B修改后的值。 ,避免脏读和不可重复读 常见问题:假设事务A进行某一范围的查询,然后事务B在该范围内插入一条新的数据,事务A再次查询时会返回原有数据+事务B新插入的数据。 connection.prepareStatement(sql1); PreparedStatement preparedStatement2 = connection.prepareStatement(sql2); 5. preparedStatement1.executeQuery(); ResultSet resultSet2 = preparedStatement2.executeUpdate(); 5.

    35110编辑于 2026-01-13
  • 来自专栏小小程序员——DATA

    Spring6整合JUnit5和1事务JdbcTemplate

    这样一来,我们通过Spring整合JUnit可以使程序创建spring容器了 6.1、整合JUnit5 6.1.1、搭建子模块 搭建spring-junit模块 6.1.2、引入依赖 <dependencies --junit5测试--> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api classpath:beans.xml") //方式二 @SpringJUnitConfig(locations = "classpath:beans.xml") public class SpringJUnit5Test = 3) public void buyBook(Integer bookId, Integer userId) { try { TimeUnit.SECONDS.sleep(5) **【不管有没有,直接开启一个新事务,开启的新事务和之前的事务不存在嵌套关系,之前事务被挂起】** NOT_SUPPORTED:以非事务方式运行,如果有事务存在,挂起当前事务**【不支持事务,存在就挂起

    1.6K30编辑于 2023-03-25
  • 来自专栏技术趋势

    spring5.x-声明式事务原理及源码实现

    Set<String> annoTypes = importingClassMetadata.getAnnotationTypes(); //获取迭代器 Iterator var5 = annoTypes.iterator(); //循环获取 while(var5.hasNext()) { //获取下一个annotYPE String annoType = (String)var5.next(); //获取属性 AnnotationAttributes candidate = AnnotationConfigUtils.attributesFor advisorNames; int var4 = advisorNames.length; //通过循环判断每个name是否符合条件 for(int var5 = 0; var5 < var4; ++var5) { String name = var3[var5]; if (this.isEligibleBean

    1.1K40编辑于 2023-09-01
  • 来自专栏Android逆向分析从入门到深入

    5种分布式事务解决方案优缺点对比

    处理流程如下: 阶段一 a) 协调者向所有参与者发送事务内容,询问是否可以提交事务,并等待答复。 b) 各参与者执行事务操作,将 undo 和 redo 信息记入事务日志中(但不提交事务)。 b) 参与者收到 preCommit 请求后,执行事务操作,将 undo 和 redo 信息记入事务日志中(但不提交事务)。 方案通过在消费者额外新建事务消息表,消费者处理业务和记录事务消息在本地事务中完成,轮询事务消息表的数据发送事务消息,提供者基于消息中间件消费事务消息表中的事务。 MQ事务消息(最终一致性) 支持事务消息的MQ,其支持事务消息的方式采用类似于二阶段提交。 05 Sagas事务模型(最终一致性) Saga模式是一种分布式异步事务,一种最终一致性事务,是一种柔性事务,有两种不同的方式来实现saga事务,最流行的两种方式是: 一、 事件/编排Choreography

    1K10发布于 2020-03-31
  • Java中非事务控制事务

    欢迎关注微信公众号:数据科学与艺术 作者WX:superhe199 标题: Java中非事务控制事务 本文探讨Java中非事务控制事务的实践和应用。 在本文中,我们将讨论如何使用Java编程语言实现这些非事务控制事务,并提供一些具体的案例分析。 首先,让我们明确什么是非事务控制事务。 与传统的数据库事务不同,非事务控制事务是指在没有数据库事务的支持下,通过编程技术模拟出一些类似事务的特性。在这种情况下,我们需要保证一系列操作的原子性、一致性、隔离性和持久性。 如果转账成功,提交事务,并关闭数据库连接。 下面是一个示例代码,展示了如何在Java中实现这个非事务控制事务的转账功能。 总结: 在本文中,我们介绍了在Java中实现非事务控制事务的方法,并通过一个简单的案例分析进行了说明。非事务控制事务是一种在没有数据库事务支持的情况下,通过编程技术模拟出类似事务的特性的方法。

    32710编辑于 2025-08-29
  • 来自专栏源码之路

    逐行阅读Spring5.X源码(十三)spring事务源码分析

    既然讲spring事务源码分析,想必读者都知道什么是事务吧!包括事务四大特性ACID,4大隔离级别。笔者就不详细讲这些简单的知识了,简单列一下事务的概念。 ) 事务的隔离性是指在并发环境中,并发的事务时相互隔离的,一个事务的执行不能不被其他事务干扰。 比如事务A和事务B同时进行,事务A进行+1操作,此时,事务B无法看到这个数据项在事务A操作过程中的所有中间值,只能看到最终的10。 ); //回滚事务 void rollback(TransactionStatus status); } TransactionDefinition 该接口定义了5个方法以及一些表示事务属性的常量 如果当前有事务,则抛出异常 int PROPAGATION_NEVER = 5; //如果当前有事务,则在嵌套事务中执行。

    1.1K30发布于 2020-09-04
  • 来自专栏老男孩成长之路

    5种分布式事务解决方案优缺点对比

    阶段一 a) 协调者向所有参与者发送事务内容,询问是否可以提交事务,并等待答复。 b) 各参与者执行事务操作,将 undo 和 redo 信息记入事务日志中(但不提交事务)。 b) 参与者收到 preCommit 请求后,执行事务操作,将 undo 和 redo 信息记入事务日志中(但不提交事务)。 方案通过在消费者额外新建事务消息表,消费者处理业务和记录事务消息在本地事务中完成,轮询事务消息表的数据发送事务消息,提供者基于消息中间件消费事务消息表中的事务。 ? MQ事务消息(最终一致性) 支持事务消息的MQ,其支持事务消息的方式采用类似于二阶段提交。 05 Sagas事务模型(最终一致性) Saga模式是一种分布式异步事务,一种最终一致性事务,是一种柔性事务,有两种不同的方式来实现saga事务,最流行的两种方式是: 一、 事件/编排Choreography

    3.3K30发布于 2019-12-02
  • 来自专栏springBoot3.0

    事务

    所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读。 《MySQL 技术内幕:InnoDB 存储引擎(第 2 版)》7.7 章这样写到: InnoDB 存储引擎提供了对 XA 事务的支持,并通过 XA 事务来支持分布式事务的实现。 分布式事务指的是允许多个独立的事务资源(transactional resources)参与到一个全局的事务中。事务资源通常是关系型数据库系统,但也可以是其他类型的资源。 全局事务要求在其中的所有参与的事务要么都提交,要么都回滚,这对于事务原有的 ACID 要求又有了提高。 解决幻读的方式主要有以下几种: 将事务隔离级别调整为 SERIALIZABLE 。 在可重复读的事务级别下,给事务操作的这张表添加表锁。

    93620编辑于 2023-03-06
  • 来自专栏浩Coding

    Java EE之SSM框架整合开发 -- (5) Spring的事务管理

    -- 指定需要扫描的包(包括子包),使注解生效 --> <context:component-scan base-package="com.ch<em>5</em>"/> <! /> </bean> </beans> 5.1.3 创建实体类和数据访问层 创建实体类MyUser,注意,该类属性和我们刚才建的数据库里面的user表字段一致哦: package com.ch5; + ", usex=" + usex + "]"; } } 数据访问层TestDao接口和TestDaoImpl实现类,其中没有什么技术难点,大家直接看代码练手就行: package com.ch5; 2.创建Dao层 在ch5的src目录下,创建包com.statement.dao,并在包中创建TestDao接口和TestDaoImpl实现类。 ; e.printStackTrace(); } return message; } } 5.创建配置文件 在ch5的src目录下,创建包com.statement.xml

    1.5K40发布于 2019-07-03
  • 来自专栏程序猿人

    事务及分布式事务

    事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。 这些操作要么都做,要么都不做,是一个不可分割的工作单位。 本地事务 本地事务要求符合ACID的特性: 1. Mysql的undo log记录了事务修改操作之前的数据,用于在当前事务发生回滚的时候,使该条数据状态恢复到事务开始前的状态。 2. Mysql中的Innodb引擎支持事务,有4个隔离级别: 读-未提交 读-未提交是说一个事务(假设A)可以读到其他事务(假设B)尚未提交的数据。 是一种无锁并发控制,原理是通过为事务分配单项增长的事务ID,并为每行数据保存一个版本链,版本链上的数据与修改它的事务ID相关联。 一部分是把大事务拆分为若干个小事务,将整个分布式事务T分解为n个子事务,我们命名T1,T2,...,Ti,...,Tn。每个子事务都应该、或者能被看做是原子行为。

    2.6K21发布于 2021-04-25
  • 来自专栏CSDN 迁移文章

    Spring 事务和事务传播机制

    事务的回顾 在 MySQL 学习阶段,已经了解到了事务是一组操作的集合,也就是把所有的操作作为一个整体,一起向数据库提交或者撤销操作,要么同时成功,要么同时失败 一个事务的操作流程包括了,开启事务,执行事务操作 ,提交事务或回滚事务,对于回滚事务来说,如果程序在执行过程中出现了错误,那么此时就需要执行回滚事务 2. 编程式事务 Spring 手动操作事务和 MySQL 操作事务类似,也是分为开启事务,提交事务,回滚事务等三个操作,需要用到 DataSourceTransactionManager (事务管理器)来进行上述事务的操作 事务传播机制 事务传播机制是指在多个事务方法相互调用时,定义事务如何在这些方法之间传播的规则,也就是延用调用方法的事务还是再重新开启一个新事务 Spring 事务的传播机制有以下七种 事务传播机制 描述 B 以非事务方式执行,如果 A 有事务就抛出异常 Propagation.NESTED 如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行。

    1.4K10编辑于 2024-12-20
领券