zoukankan      html  css  js  c++  java
  • Spring:(九)声明式事物

    一、事物

    事物:保证数据的一致性和完整性

    事物就是把一系列的动作当做一个独立的工作单元,这些动作要么全部完成,要么都不起作用

    • 特性

      原子性,一致性,隔离性,持久性


    二、事物管理

    Spring在不同的事务管理API之上定义了一个抽象层,使得开发人员不必了解底层的事务管理API就可以使用Spring的事务管理机制,Spring支持编程式事务管理和声明式的事务管理

    • 编程式事务管理

      • 将事务管理代码嵌到业务方法中来控制事务的提交和回滚
      • 缺点:必须在每个事务操作业务逻辑中包含额外的事务管理代码
    • 声明式事务管理

      • 一般情况下比编程式事务好用。
      • 将事务管理代码从业务方法中分离出来,以声明的方式来实现事务管理。
      • 将事务管理作为横切关注点,通过aop方法模块化。Spring中通过Spring AOP框架支持声明式事务管理。

    1. -事物管理接口
    • PlatformTransactionManager: (平台)事务管理器
    • TransactionDefinition: 事务定义信息(事务隔离级别、传播行为、超时、只读、回滚规则)
    • TransactionStatus: 事务运行状态
      • 脏读:一个事物正在修改数据,还没有提交至数据库,另外一个事物访问此数据,进行操作,另外一个事物读到的就是“脏数据”
      • 丢失修改:一个事物修改数据,另外一个事物也修改数据,那么第一个事物的操作将丢失
      • 不可重复读:一个事物多次读取同一个数据,另外一个事物修改数据,这样导致事物一两次读取的数据不一样
      • 幻读:一个事物多次读取数据,另外一个事物添加数据,事物一发现多了原本不存在的元素,仿佛发生了幻觉

    三、使用

    使用Spring管理事务,注意头文件的约束导入 : tx

    xmlns:tx="http://www.springframework.org/schema/tx"
    
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd">
    
    1. 配置事务管理器
      1. 无论使用Spring的哪种事务管理策略(编程式或者声明式)事务管理器都是必须的。
      2. 就是 Spring的核心事务管理抽象,管理封装了一组独立于技术的方法。
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource" />
     </bean>
    
    1. 配置事物通知

      <!--配置事务通知-->
      <tx:advice id="txAdvice" transaction-manager="transactionManager">
          <tx:attributes>
              <!--配置哪些方法使用什么样的事务,配置事务的传播特性-->
              <tx:method name="add" propagation="REQUIRED"/>
              <tx:method name="delete" propagation="REQUIRED"/>
              <tx:method name="update" propagation="REQUIRED"/>
              <tx:method name="search*" propagation="REQUIRED"/>
              <tx:method name="get" read-only="true"/>
              <tx:method name="*" propagation="REQUIRED"/>
          </tx:attributes>
      </tx:advice>
      
  • 相关阅读:
    9.算术运算符
    7.字符串格式化
    下载和配置JDK
    Set-常用API及详解
    List-ApI及详解
    电路交换、报文交换、分组交换比较
    集合之List—ArrayList
    java的getClass()函数
    Object类、包装类、内部类详解
    接口的探究
  • 原文地址:https://www.cnblogs.com/dreamzone/p/12402854.html
Copyright © 2011-2022 走看看