美文网首页
spring事物

spring事物

作者: setone | 来源:发表于2018-12-28 13:46 被阅读0次

    事物的特性:

    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 如果当前事物存在,则嵌套事务

    相关文章

      网友评论

          本文标题:spring事物

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