zoukankan      html  css  js  c++  java
  • mybatis 并发问题解决,参考hibernate

           时候操作同一账户就是典型的样例。

    比方A、B操作员同一时候读取一剩余金额为1000元的账户,A操作员为该账户添加100元。B操作员同一时候为该账户减去 50元。A先提交。B后提交。 最后实际账户剩余金额为1000-50=950元。但本该为 1000+100-50=1050。这就是典型的并发问题

       一个简单的解决的方法:更新的时候给版本字段加上 1。然后 UPDATE 会返回一个更新结果的行数,通过这个行数去推断。


        update account set price = #price #,version=version+1

                                  where id=#id# and version=#vsersion#


           假设更新运行返回的数量是 0 表示产生并发改动了,须要又一次获得最新的数据后再进行更新操作。


          Hibernate、JPA 等 ORM 框架或者实现。是使用版本,再推断 UPDATE 后返回的数值,假设这个值小于 1 时则抛出乐观锁并异常脂肪的变化。

    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    约瑟夫环公式解
    闭区间筛素数个数
    欧拉函数
    负进制转换
    2018黑龙江省赛总结
    基础博弈——威佐夫与尼姆不得不说的那些事
    极角排序
    int型素数拆分
    快速幂与费马小定理与组合数
    A*搜索算法
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4641581.html
Copyright © 2011-2022 走看看