栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring-事务管理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring-事务管理

一、spring-tx配置流程

在没用Spring 的项目中,我们可以通过设置sqlsession.commit()和rollback()来提交事务或者回滚,但当我们使用spring后,所有的mapper都变成了bean可以直接得到,我们不用再去构造sqlsession,那在某些业务(银行转账等)中,如何控制事务呢?

1.导包

2. 配置事务管理的bean 3. 声明事务管理的方法 4. 声明切点 5. 将事务管理方法指向切点


    
    
    
    
    
    
        
        
        
        
    
     
    
        
    
    
    
        
        
    
    
    
        
    
    
        
    

    
    

    
        
    
    
    
        
            
            
            
            
            
            
            
        
    
    
    
        
        
        
        
    	    
        
    

二、事务常见属性
  1. name=”” 哪些方法需要有事务控制
    1.1 支持*通配符

  2. readonly=”boolean” 是否是只读事务.
    2.1 如果为true,告诉数据库此事务为只读事务.数据化优化,会对性能有一定提升,所以只要是查询的方法,建议使用此数据.
    2.2 如果为false(默认值),事务需要提交的事务.建议新增,删除,修改.

  3. propagation 控制事务传播行为.
    3.1 当一个具有事务控制的方法被另一个有事务控制的方法调用后,需要如何管理事务(新建事务?在事务中执行?把事务挂起?报异常?)
    3.2 REQUIRED (默认值): 如果当前有事务,就在事务中执行,如果当前没有事务,新建一个事务.
    3.3 SUPPORTS:如果当前有事务就在事务中执行,如果当前没有事务,就在非事务状态下执行.
    3.4 MANDATORY:必须在事务内部执行,如果当前有事务,就在事务中执行,如果没有事务,报错.
    3.5 REQUIRES_NEW:必须在事务中执行,如果当前没有事务,新建事务,如果当前有事务,把当前事务挂起.
    3.6 NOT_SUPPORTED:必须在非事务下执行,如果当前没有事务,正常执行,如果当前有事务,把当前事务挂起.
    3.7 NEVER:必须在非事务状态下执行,如果当前没有事务,正常执行,如果当前有事务,报错.
    3.8 NESTED:必须在事务状态下执行.如果没有事务,新建事务,如果当前有事务,创建一个嵌套事务.

  4. isolation=”” 事务隔离级别
    在多线程或并发访问下如何保证访问到的数据具有完整性的.下面展示并发情况下数据库出现的问题
    脏读:

    • 一个事务(A)读取到另一个事务(B)中未提交的数据,另一个事务中数据可能进行了改变,此时A事务读取的数据可能和数据库中数据是不一致的,此时认为数据是脏数据,读取脏数据过程叫做脏读.

    不可重复读:

    • 主要针对的是某行数据.(或行中某列)
    • 主要针对的操作是修改操作.
    • 两次读取在同一个事务内
    • 当事务A第一次读取事务后,事务B对事务A读取的数据进行修改,事务A中再次读取的数据和之前读取的数据不一致,过程不可重复读.

    幻读:

    • 主要针对的操作是新增或删除
    • 两次事务的结果.
    • 事务A按照特定条件查询出结果,事务B新增了一条符合条件的数据.事务A中查询的数据和数据库中的数据不一致的,事务A好像出现了幻觉,这种情况称为幻读.

4.5 DEFAULT: 默认值,由底层数据库自动判断应该使用什么隔离界别
4.6 READ_UNCOMMITTED: 可以读取未提交数据,可能出现脏读,不重复读,幻读.
4.6.1 效率最高.
4.7 READ_COMMITTED:只能读取其他事务已提交数据.可以防止脏读,可能出现不可重复读和幻读.
4.8 REPEATABLE_READ: 读取的数据被添加锁,防止其他事务修改此数据,可以防止不可重复读.脏读,可能出现幻读.

  • 4.9 SERIALIZABLE:

    • 排队操作,对整个表添加锁.一个事务在操作数据时,另一个事务等待事务操作完成后才能操作这个表.
    • 最安全的
    • 效率最低的.
  • 5. rollback-for=”异常类型全限定路径”

    • 当出现什么异常时需要进行回滚
    • 建议:给定该属性值.
    • 手动抛异常一定要给该属性值.
  1. no-rollback-for=””
    当出现什么异常时不滚回事务.
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/390356.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号