zoukankan      html  css  js  c++  java
  • 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对象的信息不需要通过配置的方式指定

  • 相关阅读:
    Pentest_Mind-mapping 渗透测试思维导图
    pt-archiver归档数据丢失
    Vue笔记:bin-code-editor使用
    Vue笔记:Vue3 Table导出为Excel
    Go异步check简单示例
    flask_apscheduler定时任务组件使用
    组织沟通文化的变革与卓有成效的管理沟通
    业绩核能
    管理
    SAP MM 移动平均价管理的物料库存初始化导入的一个小问题
  • 原文地址:https://www.cnblogs.com/GumpYan/p/14201399.html
Copyright © 2011-2022 走看看