首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏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

    53120编辑于 2021-12-08
  • 来自专栏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.*(..

    47930编辑于 2022-03-12
  • 来自专栏夕阳醉了

    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

    54840编辑于 2023-10-16
  • 来自专栏跟着阿笨一起玩NET

    .Net中的5事务总结

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

    71710发布于 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,然后执行子事务,这个子事务的执行也算是父事务的一部分,然后子事务执行结束,父事务继续执行

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

    SpringBoot第5小节:事务管理

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

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

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

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

    26910编辑于 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 { 提交分支事务

    65510编辑于 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.

    36720编辑于 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.

    14210编辑于 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.4K30编辑于 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

    85640编辑于 2023-09-01
  • 来自专栏全栈程序员必看

    java 事务嵌套_Java事务以及嵌套事务

    最近遇到事务的处理,嵌套事务,自己研究,整理一下。 1 先看结论 1、在Java事务中,事务的嵌套,如果有事务成功,那么则都成功,否则都不会成功。 { @Autowired UserService userService; @Test public void test3() { userService.addUser5(); } } @Service Autowired UserRepository userRepository; @Transactional(rollbackFor = Exception.class) public void addUser5( ) { userRepository.save(new User(“user5”)); this.addUser6(new User(“user6”)); } @Transactional(rollbackFor { @Autowired UserService userService; @Test public void test5() { userService.addUser9(); } } @Service

    3.7K10编辑于 2022-11-07
  • Java中非事务控制事务

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

    18910编辑于 2025-08-29
  • 来自专栏全栈程序员必看

    java事务_Java 事务详解

    一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。 二、Hibernate事务处理 (1)Hibernate事务处理 在Hibernate框架中,使用Transaction接口来维护了事务实现(JTA,JDBC)的抽象。 void rollback() 强制此事务回滚。 void setTimeout(int seconds) 它为由此实例开始的后续调用启动的任何事务设置事务超时。 Session,启动事务,执行所有与数据相关的工作,结束事务并关闭Session。 一个JTA事务可以有多个参与者,而一个JDBC事务则被限定在一个单一的数据库连接。

    1.9K20编辑于 2022-11-04
  • 来自专栏Android逆向分析从入门到深入

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

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

    85310发布于 2020-03-31
  • 来自专栏老男孩成长之路

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

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

    3.1K30发布于 2019-12-02
  • 来自专栏源码之路

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

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

    91230发布于 2020-09-04
  • 来自专栏springBoot3.0

    事务

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

    76020编辑于 2023-03-06
  • 来自专栏基础知识文章

    事务

    1.事务处理 1.事务的概念 事务是针对数据库的一组操作, 它可以由-一条或多条SQL语句组成。 2.事务的基本操作 在默认情况下,用户执行的每一条SQL语句都会被当成单独的事务自动提交。 COMMIT; 如果不想提交当前事务,可以取消事务(即回滚)。 ROLLBACK; 事务的执行要么成功,要么就返回到事务开始前的状态,这就保证了同一事务操作的同步性和数据的完整性。 MySQL中的事务必须满足A、C、I、D这4个基本特性。 Atomicity: 原子性 一个事务必须被视为一个不可分割的最小工作单元,只有事务中所有的数据库操作都执行成功,才算整个事务执行成功。 Isolation: 隔离性 隔离性是指当一个事务在执行时,不会受到其他事务的影响。保证了未完成事务的所有操作与数据库系统的隔离,直到事务完成为止,才能看到事务的执行结果。 为了保证这些事务之间不受影响,对事务设置隔离级是十分必要的。

    71330编辑于 2022-05-05
领券