什么是事务?

-事务是指为了实现特定的功能,对数据库所进行一组完整的逻辑操作,这组操作要么全部成功,要么全部失败。

什么是事务的四大特性?

  • 原子性 原子性这组操作是不可分割的最小单位,要么全部成功,要么全部失败。**
  • 隔离性 当一个事务进行操作的时候,其他事务不可以进行操作,这就是事务的隔离性。**
  • 一致性 事务回滚之后,数据和操作前保持一致。**
  • 持久性 一个事务一旦被提交,它对数据库的改变就是永久的。**

针对事务,spring为我们提供了那些接口?

三大接口,分别是:

  • PlatformTransactionManager 平台事务管理器
  • TransactionDefinition 事务属性的定义
  • TransactionStatus 事务运行时状态

具体执行的时候事务管理器(PlatformTransactionManager)会根据TransactionDefinition 给出的相关属性(隔离级别、传播行为、是否只读、超时时间)执行事务,执行事务的相关信息保存在TransactionStatus 里面。

PlatformTransactionManager只是为相关的实现类提供相关的接口。如果底层使用的是mybatis,那么实现类就是
DataSourceTransactionManeger;如果底层使用的是jpa,那么实现类就是JpaTransactionManeger。

clipboard.png

什么是Spring事务的隔离级别?

Read uncommitted 读未提交 允许其他事务读取当前事务未提交的数据,有可能导致出现脏读问题。
Read committed读提交 允许其他事务对数据进行更新(UPDATE)操作,有可能会导致出现不可重复读问题。
Repeatable read重复读 就是在开始读取数据(事务开启)时,不再允许修改操作,允许插入INSERT操作,有可能导致幻读问题。
Serializable序列化 串行化顺序执行,相当于锁表。 最安全,但是效率低下。

什么是Spring事务的传播机制?

PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务,最常见的选择。 有就有,没有就创建一个,必须要事务。

PROPAGATION_SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。 没有就没有。

PROPAGATION_MANDATORY--支持当前事务,如果当前没有事务,就抛出异常。 没有就抛异常。

实现Spring事务有什么方式

编程式和声明式,声明式又分三种,最常用的就是使用注解@Transantional(propagation=Propagation.REQUIRED)

参考资料

视频:https://www.imooc.com/learn/478


Nirvana
32 声望5 粉丝

整个体系复杂对我而言又陌生,每次学习对自己的脑力与知识体系都是一个巨大的挑战,也需要克服巨大的惰性;巨大的挑战同时也意味着巨大的诱惑。意味着我搞懂了,就能超越平凡的大多数,能力又上升了一个台阶。一...