• Spring事务控制&编程式事务控制三大对象


    1.Spring 支持两种类型的事务管理

    • 编程式事务管理 :这意味着你在编程的帮助下有管理事务。这给了你极大的灵活性,但却很难维护。(自己使用Java的API写代码)

    • 声明式事务管理 :这意味着你从业务代码中分离事务管理。你仅仅使用注释或 XML 配置来管理事务。(用配置的方式)

    声明式事务管理比编程式事务管理更可取,尽管它不如编程式事务管理灵活,但它允许你通过代码控制事务。但作为一种横切关注点,声明式事务管理可以使用 AOP 方法进行模块化。Spring 支持使用 Spring AOP 框架的声明式事务管理

    2.编程式事务控制三大对象(了解)

    2.1 PlatformTransactionManager

    PlatformTransactionManager接口是spring的事务管理器,它里面提供了我们常用的操作事务方法

     

     注意:

    PlatformTransactionManager是接口类型,不同的Dao层技术则有不同的实现类,不同的Dao层实现技术控制事务的方式是不一样的,例如:Dao层技术是jdbc或mybatis时:org.springframework.jdbc.datasource.DataSourceTransactionManager;

    Dao层技术是hibernate时:org.springframework.orm.hibernate5.HibernateTransactionManager

    不管DataSourceTransactionManager还是HibernateTransactionManager都是PlatformTransactionManager接口的实现。方法给你固定好了,你自己去实现。

    2.2 TransactionDefinition

    TransactionDefinition是事务的定义信息对象,封装了控制事务的一些参数,里面有如下方法:

    2.2.1 事务隔离级别

    设置隔离级别,可以解决事务并发产生的问题,如脏读、不可重复读和虚读

    隔离级别如下:

     2.2.2 事务的传播行为

    传播行为的作用:

    解决一个业务方法调用另一个业务方法时,它们之间事务统一性的问题。如,A业务方法调用B业务方法时,如果A和B事先都对它们进行事务控制,A在调B的时候,事务可能出现重复或者统一的问题。B看A有没有事务,下面的都是从这个角度来看

     2.3 TransactionStatus

    TransactionStatus接口提供的是事务具体的运行状态,该对象内部维护的信息是:维护在不同的时间点,这个事务的状态信息的,方法介绍如下:

    2.4 编程式事务控制三个对象功能总结

     PlatformTransactionManager和TransactionDefinition这两个对象不需要手动编程,但是这两个对象的一些信息,要在声明式,配置的时候告诉spring框架,而TransactionStatus对象是被动的封装事务信息的,随着程序的进行,事务内部的信息也会进行相应的改变,因此TransactionStatus对象的信息不需要通过配置的方式指定

  • 相关阅读:
    leetcode-----118. 杨辉三角
    leetcode-----117. 填充每个节点的下一个右侧节点指针 II
    leetcode-----116. 填充每个节点的下一个右侧节点指针
    leetcode-----115. 不同的子序列
    leetcode-----114. 二叉树展开为链表
    leetcode-----113. 路径总和 II
    leetcode-----112. 路径总和
    leetcode-----111. 二叉树的最小深度
    windows同时安装jdk7和jdk8
    使用乌龟Git连接github
  • 原文地址:https://www.cnblogs.com/GumpYan/p/14201399.html
Copyright © 2020-2023  润新知