码迷,mamicode.com
首页 > Web开发 > 详细

mybatis 并发问题解决,参考hibernate

时间:2014-11-17 15:56:43      阅读:361      评论:0      收藏:0      [点我收藏+]

标签:style   io   color   ar   使用   sp   数据   on   问题   

       银行两操作员同时操作同一账户就是典型的例子。比如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 时则抛出乐观锁并发修改异常。

 

mybatis 并发问题解决,参考hibernate

标签:style   io   color   ar   使用   sp   数据   on   问题   

原文地址:http://blog.csdn.net/mmm333zzz/article/details/41208885

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!