您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

mybatis并发问题解决,参考hibernate

2025/7/15 23:07:18发布22次查看
银行两操作员同时操作同一账户就是典型的例子。比如a、b操作员同时读取一余额为1000元的账户,a操作员为该账户增加100元,b操作员同时为该账户减去 50元,a先提交,b后提交。 最后实际账户余额为1000-50=950元,但本该为 1000100-50=1050。这就是典型的并发
银行两操作员同时操作同一账户就是典型的例子。比如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 时则抛出乐观锁并发修改异常。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product