对于从事 java 开发工作的同学来说,spring 的事务肯定再熟悉不过了。在某些业务场景下,如果一个请求中,需要同时写入多张表的数据。为了保证操作的原子性(要么同时成功,要么同时失败),避免数据不一致的情况,我们一般都会用到 spring 事务。确实,spring 事务用起来贼爽,就用一个简单的注解:@Transactional,就能轻松搞定事务。我猜大部分小伙伴也是这样用的,而且一直用一直爽            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-10-19 10:14:48
                            
                                33阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一、事务的特性(ACID)  1、原子性(Atomicity):事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要么全部完成,要么完全不起作用。  2、一致性(Consistency):执行事务前后,数据保持一致;  3、隔离性(Isolation):并发访问数据库时,一个用户的事物不被其他事物所干扰,各并发事务之间数据库是独立的;  4、持久性(Durability):一个事务被提交之            
                
         
            
            
            
            文章目录一、什么是事务?二、Spring事务实现编程式事务声明式事务三、@Transactional的使用参数作用Spring事务的隔离级别事务失效的场景@Transactional工作原理四、Spring事务传播机制Spring有哪些事务传播机制? 一、什么是事务?事务:事务是一组操作的集合,是不可分割的基本单位,要么全部成功,要么全部失败 我们在MySQL中使用事务有三步操作:开启事务,提交            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-04 10:34:06
                            
                                72阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            本文2个目的:1、使用spring事务的过程中,哪些情况会导致事务失效?2、遇到事务相关bug时,有哪些方法可以快速定位bug?3、文末有福利1、事务失效的7种情况未启用spring事务管理功能方法不是public类型的数据源未配置事务管理器自身调用问题异常类型错误异常被吞了业务和spring事务代码必须在一个线程中1.1、未启用spring事务管理功能@EnableTransactionMana            
                
         
            
            
            
            事务的管理应该放在我们的service层进行处理spring中有两种事务的管理方式1 编程式事务管理(了解) 2 声明式事务管理(掌握) 基于注解方式实现(掌握) XML方式实现(了解) Spring声明式事务的实现方式,底层就是AOP,AOP的底层就是动态代理Spring事务管理相关的API事务管理器接口: PlatformTransactionManager 针对不同的框架,提供了不同的实现            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-08-29 15:30:39
                            
                                27阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Spring 事务管理及失效总结所谓事务管理,其实就是“按照给定的事务规则来执行提交或者回滚操作”。Spring 并不直接管理事务,而是提供了多种事务管理器,他们将事务管理的职责委托给 Hibernate 或者 JTA 等持久化机制所提供的相关平台框架的事务来实现。Spring 事务管理器接口: org.springframework.transaction.PlatformTransaction            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-25 20:20:04
                            
                                15阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            大多数的人刚接触到数据库事务的时候肯定是一张懵圈脸,一脸迷茫透露着求知欲。在这给大家科普一些事务知识。:事务的概念事务的特征Mysql数据库存储引擎支持修改Mysql数据库存储引擎spring配置事务测试代码注意事务的概念事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。通过事务将逻辑相关的一组操作绑定在一起,以便服务            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-09 22:06:27
                            
                                46阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            目录1.错误的访问权限2.方法被定义成final的3.方法内部调用4.当前实体没有被spring管理5.错误的spring事务传播特性6.数据库不支持事务7.自己吞掉了异常8.抛出的异常不正确9.多线程调用10.嵌套事务多回滚了1.错误的访问权限@Service
public class UserService {
    @Autowired
    private UserMapper us            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-10-09 12:00:57
                            
                                0阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # MySQL 游标事务提交详解
在数据库开发中,游标是一种非常重要的工具,它允许开发者逐行处理查询结果集。MySQL中的游标与事务的结合,能够极大地提升数据处理的灵活性和可靠性。本文将详细介绍MySQL游标的使用以及何时提交事务,并将通过代码示例加以说明。
## 什么是游标?
游标是一种用于遍历数据库表记录的指针,能够使开发者逐行读取数据。游标广泛应用于需要逐行处理数据的场景。例如,我们可            
                
         
            
            
            
            spring中的事务分为两种:一种是编程式事务,一种是声明式事务。顾名思义,编程式事务是指通过代码去实现事务管理,这里不做过多说明。另一种是声明式事务,分为两种情况01:一种是通过传统xml方式配置,02:使用@Transactional注解方式配置,这是主要讲解的是通过注解方式配置。因为在springboot项目中,会自动配置DataSourceTransactionManager,我们只需要在            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-15 14:48:29
                            
                                397阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一:何时使用事务    1: 在批处理过程中,必须把多个行为作为一个单元插入或删除    2: 只要一个表发生变化,就需要其他表与它同步    3: 同时修改两个或多个数据库中的数据    4: 在分布式事务中,在不同服务器上操作数据库中的数据二:ACID属性:原子性,一致性,孤            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-10 07:24:29
                            
                                150阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            #问题背景  在项目中由于文档编号生成规则出现问题,需要将所有的记录提取出来重新生成新的文档编号,规则是根据创建日期比如2020-01-21的第一条就是编号就是“202001210001”,当天的编号持续累加。于是操作如下: 1.将之前生成的编号全部置空 2.根据条件提取出所有需要更新的数据 3.for循环更新文档编号#结果  在数据库中发现,所有数据的文档编号都是结尾都是0001,并没有出现累加            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-23 16:10:26
                            
                                419阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            ( 十五 ) Spring CGLlB动态代理
    ( 十五 ) Spring CGLlB动态代理  1、简介    通过学习《Spring JDK动态代理》一节可以了解到,JDK 动态代理使用起来非常简单,但是 JDK 动态代理的目标类必须要实现一个或多个接口,具有一定的局限性。如果不希望实现接口,可以使用 CGLI            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-04 14:20:09
                            
                                90阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            声明式事务中属性解释1. name=”” 哪些方法需要有事务控制1.1 支持*通配符2. readonly=”boolean” 是否是只读事务.2.1 如果为true,告诉数据库此事务为只读事务.数据化优化,会对性能有一定提升,所以只要是查询的方法,建议使用此数据.2.2 如果为false(默认值),事务需要提交的事务.建议新增,删除,修改.3. propagation 控制事务传播行为.3.1            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-28 19:44:48
                            
                                12阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            为什么会有面向切面编程(AOP)?我们知道Java是一个面向对象(OOP)的语言,但它有一些弊端,比如当我们需要为多个不具有继承关系的对象引入一个公共行为,例如日志、权限验证、事务等功能时,只能在在每个对象里引用公共行为。这样做不便于维护,而且有大量重复代码。AOP的出现弥补了OOP的这点不足。为了阐述清楚Spring AOP,我们从将以下方面进行讨论:代理模式 静态代理原理及实践 动态代理原理及            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-10-10 13:35:09
                            
                                15阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            前言最近在看spring事务源码,时不时回想起前几年面试YY的场景,面试官拿出下面的一道面试题问我,updateStatus方法会不会生成事务。我心想,这么简单的问题还要问我,这是瞧不起我的水平吗?但是我仔细看了看,想了想,这道题还真不容易回答,如果以前没有特别注意或者研究过,很容易掉坑里。还好我当时认真想了想,回答了不会生成事务,但后面面试官继续追问为什么不产生事务,我就把具体的原因说明了一下,            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-07-12 12:55:00
                            
                                29阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            注意:如果想要理解spring 的声明式事务,必须先理解AOP 的原理。一、spring注册 InfrastructureAdvisorAutoProxyCreator通过 @EnableTransactionManagement 可以看到先把TransactionManagementConfigurationSelector通过@Import注册到spring。同时注意,mode 的默认值是 P            
                
         
            
            
            
            本篇内容包括:Spring注解事务的实现mybatis-spring包为事务提供的支持动态数据源使用配置需要注意的问题动态数据源配置例子事务不起作用原因有哪些?我遇到过的就这两点:同一个bean中调用自身的添加事务注解的方法使用动态数据源配置不正确导致的一个Service方法中直接调用另一个被声明事务的方法,因为是在this中调用的,就走不到事务的切面方法,也就直接导致事务不生效,对于此类问题,可            
                
         
            
            
            
            在使用注解事务的情况时,Spring会把每个方法的执行封装为AOP执行过程。每次执行被事务注解方法时,会判断是否有必要创建事务。            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-01-10 00:00:11
                            
                                354阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            在java中异常的基类为Throwable,他有两个子类xception与Errors。同时RuntimeException就是Exception的子类,只有RuntimeException才会进行回滚; 1,Spring事务回滚机制是这样的:当所拦截的方法有指定异常抛出,事务才会自动进行回滚! 我            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2019-06-17 10:17:00
                            
                                151阅读
                            
                                                                                    
                                2评论