spring事务隔离和传播机制的简单理解

一、spring事务的传播机制(HibernateTransactionManager)

     1)、<tx:method name="*" propagation="REQUIRED" /> 如果当前没有事务,就新建一个事务;如果已存在一个事务,就加入到这个事务中。

    2)、<tx:method name="*" propagation="SUPPORTS" /> 支持当前事务,如果当前没有事务,以非事务方式执行。

    3)、<tx:method name="*" propagation="MANDATORY" />使用当前事务,如果当前没有事务,则抛出异常。

    4)、<tx:method name="*" propagation="REQUIRES_NEW" />新建事务,如果当前存在事务,则把当前事务挂起。

    5)、<tx:method name="*" propagation="NOT_SUPPORTED" />以非事务方式执行,如果当前存在事务,则把当前事务挂起。

    6)、<tx:method name="*" propagation="NEVER" />以非事务方式执行,如果当前存在事务,则抛出异常。

    7)、<tx:method name="*" propagation="NESTED" />如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行         与 PROPAGATION_REQUIRED 类似的操作。

二、spring事务隔离级别(Isolation Level)

    1)、Serializable: 事务串行执行,提供严格的事务隔离,它要求事务序列化执行,事务只能一个接着一个地执行,不能并发执行,资源消耗最大。

     2)、Repeatable Read:可重复读取,保证了一个事务不会修改已经由另一个事务读取但未提交(回滚)的数据,避免了“脏读取”和“不可重复读取”的情况,但是带来了更多的性能损耗。

    3)、Read Committed:授权读取,大多数主流数据库的默认事务等级,保证了一个事务不会读到另一个并行事务已经修改但未提交的数据,避免了“脏读取”。

    4)、Read Uncommitted:未授权读取,保证读取过程中不会读到方法数据,隔离级别在于处理多事务并发问题。该隔离级别可以通过 “排他写锁”实现。事务隔离的最低级别,仅可保证不读取物理损坏的数据。与READ COMMITTED 隔离级相反,它允许读取已经被其它用户修改但尚未提交确定的数据。

    5)、隔离级别                 更新丢失 脏读取 重复读取 幻读 
            Read Uncommitted     N            Y         Y          Y 
            Read Committed        N            N         Y          Y 
            Repeatable Read     N            N         N         Y 
           Serializable               N            N         N         N


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值