Spring事务

作者: 唐怀瑟_ | 来源:发表于2019-12-15 20:05 被阅读0次
1、什么是事务?

事务是指逻辑上的一组操作,这组操作要么全部成功,要么全部失败。

2、事务的特性

①原子性:指事务的操作要么全部都发生,要么都不发生。
②一致性:指事务执行前后数据的完整性必须保持一致。
③隔离性:指多个事务并发访问数据库时,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间数据要相互隔离(可以通过设置事务的隔离级别解决,后续会讲到)。
④持久性:指一个事务一旦被提交,它对数据库中的数据的改变是永久性的,即使数据库发生故障也不应该对其有任何影响。

3、Spring事务管理器

Spring事务管理器高层抽象接口主要有3个接口
①PlatformTransactionManager(平台事务管理器):主要是进行事务的提交回滚等功能。
②TransactionDefinition(事务定义信息):主要包含事务的隔离级别、传播行为、是否超时等。
③TransactionStatus(事务具体运行状态):包括事务是否已提交、是否是新创建的事务、是否有保存点等。

4、PlatformTransactionManager接口

根据不同的持久化框架提供了不同的PlatformTransactionManager接口实现:
①使用Spring JDBC或iBatis
org.springframework.jdbc.datasource.DataSourceTransactionManager
②使用Hibernate3.0版本
org.springframework.orm.hibernate3.0.HibernateTransactionManager

5、TransactionDefinition接口

若不考虑事务的隔离性,会引发安全问题如下:
①脏读:一个事务读取了另一个事务改写但还未提交的数据,如果这些数据被回滚,则读到的数据是无效的。
②不可重复读:在同一事务中,多次读取同一数据返回的结果有所不同。
③幻读:一个事务读取了几行记录后,另一个事务插入了一些记录,在后来的查询中第一个事务就会发现有些原来没有的记录。

5.1事务的隔离级别(四种)

事务的隔离级别就是用来解决以上三种安全问题的,隔离级别从低到高有四种:
①read_uncommited:允许你读取还未提交的改变了的数据。可能会导致脏读、不可重复读、幻读。
②read_commited:允许在并发事务已提交后读。可防止脏读,但不可重复读、幻读仍可能发生。
③repeatable_read:可防止脏读、不可重复读,但幻读仍可能发生。
④serializable:完全服从ACID的隔离级别,但是速度是最慢的。
还有就是默认的default,它与你后端使用的数据库默认隔离级别一致,比如使用MySQL默认就是repeatable_read,使用Oracle默认就是read_commited。

5.2事务的传播行为(七种)

事务的传播行为主要解决的是业务层方法之间相互调用时产生的事务应该如何进行传递的问题。比如我要调用service1中的a()和service2中的b()才能完成一个业务这种情况。
①propagation_required
②propagation_supports
③propagation_mandatory
④propagation_requires_new
⑤propagation_not_supported
⑥propagation_never
⑦propagation_nested
(详细的后续再进行添加)

6、TransactionStatus接口

这里就简单列举几个常用到的方法:
boolean hasSavePoint()//事务是否有保存点;
boolean isCompleted()//事务是否已经完成了;
boolean isNewTransaction()//是不是一个新的事务。

相关文章

  • 关于事务的思考

    Spring对于事务的支持 Spring事务接口 Spring事务管理器 Spring并不直接管理事务,而是提供多...

  • Spring事务

    Spring 事务 分类 Spring可以支持编程式事务和声明式事务。 编程式事务 实现 Spring使用事务管理...

  • Spring中实现事务方式

    Spring 中实现事务的方式 Spring 并不直接支持事务,只有当数据库支持事务时,Spring 才支持事务,...

  • Spring事务的传播特性引发的一场血案

    Spring事务的传播特性是对于Spring事务管理的一项特殊配置;Spring事务基于Spring AOP特性,...

  • Spring 事务实现分析

    1. Spring 事务简介 Spring 本身并不实现事务,Spring事务 的本质 还是 底层数据库 对事务的...

  • spring04

    Spring JdbcTemplate学习 Spring 声明式事务 xml配置实现 Spring 声明式事务 注...

  • 程序员之Spring

    1. Spring事务 spring的事务实现原理Spring事务将connection放入到当前线程的threa...

  • 面前温习

    Spring事务传播特性的浅析——事务方法嵌套调用的迷茫 解惑 spring 嵌套事务

  • 分布式事务(2)Spring事务

    2.1 Spring事务原理 Spring支持编程式事务和声明式事务。编程式事务就是用个事务类Transactio...

  • spring事务的实现原理

    spring实现事务的原理 Spring事务 的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring...

网友评论

    本文标题:Spring事务

    本文链接:https://www.haomeiwen.com/subject/llrlnctx.html