spring事物

事物的特性:

  1. 原子性
    :事物是一个不可分割的工作单位,事物中的操作要么都发生,要么都不发生
  2. 一致性
    :事物前后数据的完整性必须保持一致
  3. 隔离性
    :多个用户并发访问数据库时,一个用户的事物不能被其他用户的事物所干扰,多个并发事物之间的数据要相互隔离
  4. 持久性
    :事物一旦提交,数据就被保存到数据库里面

不考虑隔离会导致 脏度、不可重复读、幻读

名称 说明
脏读 一个事物读取了另一个事物改写但还未提交的数据,如果这些数据被混滚,则读取到的数据是无效的
不可重复读 在同一事物中,多次读取统一数据返回的结果有所不同
幻读 一个事物读取了几行记录后,另一个事物插入一些记录,幻读就发生了,在后来查询中,第一个失去就会发现原来没有的记录
隔离级别 说明
DEFAULT 使用数据库默认的级别(mysql默认REPEATABLE_READ)
READ_UNCOMMITED 允许你读取还未提交的改变了的数据,可能导致脏读,不可重复读,幻读
READ_COMMITED 允许在并发实物已经提交后读取。可防止脏读,但幻读和不可重复读仍可发生
REPEATABLE_READ 对相同字段的多次读取是一致的除非数据被食物本身改变。可防止脏、不可重复读,但幻读仍有可能发生
SERIALIZABLE 完全服从ACID的隔离级别,确保不发生脏,幻,不可重复读,这在所有的隔离级别是最慢的,他是典型的通过完全锁定在事物中涉及的数据表来完成的

事物的传播行为

解决业务层之间相互调用的行为

事物传播类型 说明
PROPAGATION_REQUIED 支持当前事物,如果不存在就新建一个
PROPAGATION_SUPPORTS 支持当前事物如果不存在就不使用事物
PROPAGATION_MANDATORY 支持当前事物,如果不存在抛出异常
PROPAGATION_REQUIRES_NEW 如果有事物存在,挂起当前事物,创建一个新的事物
PROPAGATION_NOT_SUPPORTED 以非事物方法运行 ,如果有事物存在,挂起当前事物
PROPAGATION_NEVER 以非实物方式运行,如果有事物存在,抛出异常
PROPAGATION_NESTED 如果当前事物存在,则嵌套事务
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,125评论 2 89
  • 事物特性 ⑴原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操...
    HJJ_3c00阅读 1,891评论 0 0
  • 看到关于spring事物比较好的两篇文章,转载过来。 1.事务的定义:事务是指多个操作单元组成的合集,多个单元操作...
    Aldeo阅读 4,479评论 0 8
  • 事务 回顾知识 1、什么是事务 事务逻辑上的一组操作,组成这组操作的各个逻辑单元,要么一起成功,要么一起失败. 2...
    guan_xy阅读 1,716评论 0 0
  • MySQL技术内幕:InnoDB存储引擎(第2版) 姜承尧 第1章 MySQL体系结构和存储引擎 >> 在上述例子...
    沉默剑士阅读 12,146评论 0 16