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

Spring事务详解(一)

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

Spring事务详解(一)

        扑街前言:在网上看了很多的Spring事务的详解,但是自己还是一知半解,所以第一次写文章就选择了Spring的事务,在此整理一下学习思路,仅供参考,大神勿喷。

        当拿到一个对象的时候(这里将事务理解就是一个对象),首先需要了解她的构造方法,也就是要将她new出来,然后再了解她对应的行为和定义参数,所以这篇文章我想先说一下我对Spring事务的创建理解。

        Spring事务本身提供主要三个接口来定义事务的含义,分别是:PlatformTransactionManager、TransactionDefinition、TransactionStatus。其主要作用分别是:

        TransactionDefinition:封装事务的隔离级别,超时时间,是否为只读事务和事务的传播规则等事务属性,可通过XML配置具体信息。


        PlatformTransactionManager:根据TransactionDefinition提供的事务属性配置信息,创建事务。


        TransactionStatus:封装了事务的具体运行状态。比如,是否是新开启事务,是否已经提交事务,设置当前事务为rollback-only等。


        Spring事务的提交和回滚之类的操作都是放在事务管理器中进行的,而相对于不同的持久层框架Spring也提供出了不同的事务管理器类,现在主流的mybatis和分布式事务,引用的分别就是DataSourceTransactionManager和JtaTransactionManager,其余分别如下表:

数据访问技术实现类
JDBC/MyBatisDataSourceTransactionManager
JPAJpaTransactionManager
HibernateHibernateTransactionManager
JDOJdoTransactionManager
分布式事务JtaTransactionManager

        Spring事务管理器实现如下图(以JtaTransactionManager为例):

         如此可以得出 TransactionManager接口为所有事务的父类接口,其下就是平台事务管理器PlatformTransactionManager,而平台事务管理器中又定义了事务的状态TransactionStatus(如下截图代码),当AbstractPlatformTransactionManager实现PlatformTransactionManager接口后,JtaTransactionManager事务管理器再次继承了AbstractPlatformTransactionManager实现类,并实现了TransactionFactory接口由此得到了一个事务管理器

        最后可以确定,各个事务管理其实就是由Sping提供的三个事务接口定义,并进行相应持久层框架的扩展。

        事务管理器在Spring容器中的xml文件配置如下(以JDBC实现类为例):




    

    
        
        
        
        
    

    
    
    
        
        
    

    
    
        
        
    
    
    
        
            
            
            
            
            
        
    

上面已经上事务管理器配置完成,目前需要思考如何:

1、spring如何做到事务提交和回滚?

2、事务管理器的源码以及运行原理?

3、分布式事务和普通事务的运行区别?

4、事务在jvm中如何监控数据的流转?


记录一点事务的官方结论和知识点:

1 、什么是事务?

事务是用户定义的数据库操作的集合,这些操作作为一个完整的有机工作单元,要么全部正确执行,要么全部不执行。


2、事务的四大特性:

(1)原子性(atomicity):一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做。
(2)一致性(consistency):事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
(3)隔离性(isolation):一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
(4)持久性(durability):持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。超时信息、是否只读。

3、TrancactionDefinition事务定义信息有:隔离级别、传播行为、超时信息、是否只读。

先记录这些,之后再补。

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

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

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