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

spring的声明式事务控制

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

spring的声明式事务控制

1. 事务控制

什么是编程式事务?

  • 编程式(事务)就是(程序员)手动进行(事务管理),比如:JDBC中自己(手动将:数据提交到数据库)。

什么是声明式事务?

  • 事务控制代码已经由 (spring 写好).程序员只需要(声明)出(哪些方法)需要进行(事务控制)和(如何进行)事务控制.

声明式的优势 :

  • 事务管理不侵入开发的组件, 具体来说, 业务逻辑对象就不会意识到正在事务管理之中, 事实上也应该如此, 因为事务管理属于系统层面的服务, 而不是业务逻辑的一部分, 如果想要改变事务管理策划的话, 也只需要在定义文件中重新改变配置就好了.
  • 在不需要事务管理的时候,只要在设定文件上修改一下,即可移去事务管理服务,无需改变代码重新编译,这样维护起来极其方便
2. 声明式事务控制

propagation (控制事务传播行为) :

  • 1、REQUIRED (默认值) : 如果当前有事务,就在事务中执行,如果当前没有事务,新建一个事务.
  • 2、SUPPORTS : 如果当前有事务就在事务中执行,如果当前没有事
    务,就在非事务状态下执行
  • 3、MANDATORY : 必须在事务内部执行,如果当前有事务,就在事务中执行,如果没有事务,报错.
  • 4、REQUIRES_NEW : 必须在事务中执行,如果当前没有事务,新建事务,如果当前有事务,把当前事务挂起.
  • 5、NOT_SUPPORTED : 必须在非事务下执行,如果当前没有事务,正常执行,如果当前有事务,把当前事务挂起.
  • 6、NEVER : 必须在非事务状态下执行,如果当前没有事务,正常执行, 如果当前有事务,报错.
  • 7、NESTED : 必须在事务状态下执行.如果没有事务,新建事务,如果当前有事务,创建一个嵌套事务.

isolation(事务隔离级别)

  • 1、DEFAULT : 默认值,由底层数据库自动判断应该使用什么隔离界级别
  • 2、READ_UNCOMMITTED : 可以读取未提交数据,可能出现脏读,不重复读,幻读.
  • 3、READ_COMMITTED :只能读取其他事务已提交数据.可以防止脏读,可能出现不可重复读和幻读.
  • 4、REPEATABLE_READ : 读取的数据被添加锁,防止其他事务修改此数据,可以防止不可重复读.脏读,可能出现幻读.
  • 5、SERIALIZABLE: 排队操作,对整个表添加锁.一个事务在操作数据时,另一个事务等待事务操作完成后才能操作这个表.
2.1 基于xml

声明式事务控制的实现

  1. 谁是切点
  2. 谁是通知
  3. 配置切面

在applicationContext.xml中, 配置好目标对象(内有切点), 但注意的是, 增强类(切面类, 内有增强方法)不用我们自己写了, spring框架给我们写好了对切点进行事务管理的增强了. 但是依然需要配置.

引入tx的命名空间

	
    
        
    
    
    
        
            
        
    
    
    
        
    

目前为止, 需要注意, 配置平台事务管理器不一定是使用的spring-jdbc, 目前是使用的这个, 也就说, 后期dao层使用的是不同的技术实现, 平台事务管理器的配置就不一样, 还有就是配置事务的属性那里,

		
            
        

这个地方可以对业务方法进行具体的事务设定

这里name属性的值可以使用*作为通配符, 例如, 可以update*表示所有update开头的方法.

2.2 基于注解


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/686444.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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