mybatis 并发问题解决,参考hibernate
2024-08-25 21:47:17
时候操作同一账户就是典型的样例。
比方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 时则抛出乐观锁并异常脂肪的变化。
版权声明:本文博客原创文章,博客,未经同意,不得转载。
最新文章
- ArcMap中地图输出(Options)选项显示不完整
- [Cocos2d-x For WP8]矩形碰撞检测
- js压缩反压缩
- MySQL内存----使用说明全局缓存+线程缓存) 转
- C#入门经典学习笔记一
- Code Forces Gym 100886J Sockets(二分)
- IOS-UI- UIScrollView 滚动视图(1)
- jquery 20行代码实现简单轮播效果
- 使用UIPageControl UIScrollView制作APP引导界面
- activiti笔记四 关于部署信息表act_re_deployment
- 一些常用Linux命令简记
- .NET开源项目 TOP 25
- Python中查看函数相关文档
- Mybatis框架(未完待续)
- Linux替换指定列的字符串(awk 命令)
- Web开发笔记 #08# Jackson组合多个对象的属性构成JSON(以及添加自定义属性)
- vue 使用v-cloak让在页面加载时不显示{{}}花括号
- # ML学习小笔记—Gradien Descent
- Centos7重置root密码的方法(亲测有效)
- jsp标签、 项目全路径引用${ctx}