oup2.0优化中,对乐观锁进行了重点关注,在优化中,发现乐观锁注解存在,但在部分功能中没有生效。

ps:数据库设计是门艺术,体验实践,结合设计思想。一份好的存储设计,支持横向、垂直双向扩展,兼顾业务、技术升级,同时支持不同类型存储的交叉夸张。

定位

oup中实现了前端模块化,通过java编码+前端模板+js互动,降低后端编码人员的前端编码能力,同时模板化的设计,提高了模板的高复用和标准化,js分离操作,实现逻辑和样式的分离,有点走偏。由于update操作从oup-console到oup-service穿透较多,故从前端输入、数据库sql二端入手,进行定位:

1、通过sql判断,确认update操作时,无@Version字段引入。

2、前端输入判断,确认无@Version字段输入。

基于第1点,再次深化到组件fastmybatis的核心源代码。确认在BaseServicempl.java中使用的updateByQuery的sql模板中,没有乐观锁的条件组装,故判断该方法不支持乐观锁。(回顾以往乐观锁定义:在全对象更新时,版本字段自动增加,乐观锁默认生效。对于指定sql由于版本字段无无法实现自动追加,需要手工拼装sql条件。)确认调用的updateByQuery方法错误。

解决

调整为updateIgnoreNull后,再次测试,乐观锁生效,该操作的前提是,数据库对象需要先查询后操作,若实现前端展示,需要传递到前端,在请求内包含。

ps:观fastmybatis源码底层,代码不多,设计思路也比较清晰,但解决问题的方式比较好,大大降低了编码量,并结合底层,保留了其原始扩展能力。

sql增加字段默认为0_OUP2.0:mysql乐观锁不生效相关推荐

  1. MySQL 乐观锁与悲观锁

    悲观锁 悲观锁(Pessimistic Lock),顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁. 悲观锁: ...

  2. mysql 乐观锁_使用Mysql乐观锁解决并发问题

    使用mysql乐观锁解决并发问题 案例说明 银行两操作员同时操作同一账户.比如A.B操作员同时读取一余额为1000元的账户,A操作员为该账户增加100元,B操作员同时为该账户扣除50元,A先提交,B后 ...

  3. mysql使用条件限制乐观锁_使用Mysql乐观锁解决并发问题

    使用mysql乐观锁解决并发问题 案例说明 银行两操作员同时操作同一账户.比如A.B操作员同时读取一余额为1000元的账户,A操作员为该账户增加100元,B操作员同时为该账户扣除50元,A先提交,B后 ...

  4. mysql乐观锁总结和实践

    2019独角兽企业重金招聘Python工程师标准>>> 上一篇文章<MySQL悲观锁总结和实践>谈到了MySQL悲观锁,但是悲观锁并不是适用于任何场景,它也有它存在的一些 ...

  5. mysql乐观锁总结和实践--转

    原文地址:http://chenzhou123520.iteye.com/blog/1863407 上一篇文章<MySQL悲观锁总结和实践>谈到了MySQL悲观锁,但是悲观锁并不是适用于任 ...

  6. Mysql乐观锁实战

    文章首先介绍乐观锁的概念,然后介绍乐观锁的实现原理,最后用一个springboot项目演示乐观锁的实现方式. 目录 什么是乐观锁 乐观锁实现原理 实战 什么是乐观锁 在进行数据库操作的时候,乐观锁总是 ...

  7. mysql乐观锁重试_乐观锁失败重试

    1.乐观锁失败后会报:ObjectOptimisticLockFailureException 2.处理方案:捕获到对应乐观锁失败异常后进行重试,代码参考如下 在写入数据库的时候需要有锁,比如同时写入 ...

  8. mysql乐观锁处理超卖_通过乐观锁解决库存超卖的问题

    前言 在通过多线程来解决高并发的问题上,线程安全往往是最先需要考虑的问题,其次才是性能.库存超卖问题是有很多种技术解决方案的,比如悲观锁,分布式锁,乐观锁,队列串行化,Redis原子操作等.本篇通过M ...

  9. jpa mysql乐观锁_JPA @Lock(value = LockModeType.PESSIMISTIC_WRITE) 悲观锁防坑

    前提: 由于业务需要在entity Product已经实现了@version的乐观锁的基础上再加上了悲观锁的控制 @Lock(value = LockModeType.PESSIMISTIC_WRIT ...

最新文章

  1. 【怎样写代码】参数化类型 -- 泛型(三):泛型之类型参数
  2. 解读网络“攻城狮”的发展---老赵带你铺一段路
  3. 关于MySQL事务和存储引擎10个FAQ(Frequently asked questions
  4. linux 进程地址空间的一步步探究
  5. 5918. 统计字符串中的元音子字符串
  6. 【hue】 Access denied to hive-未解决
  7. 在互联网寒冬季节,他竟然是这样进了百度!值得学习 -- 来自最前沿的实战经验!...
  8. python获取程序运行路径
  9. 玻纤效应差分信号影响及处理方法,使用sigrity建模玻纤效应仿真
  10. 商品进销差价_新准则下商品进销差价实务处理
  11. cpp调用c头文件引用方法
  12. C/C++快速读写磁盘数据的方法
  13. 【深度学习】目标检测综述
  14. Android studio显示百度地图及闪退问题的解决
  15. java怎么捕捉游戏窗口_捕捉桌面上的窗口信息
  16. Dev-C++下面的编译状态栏信息不显示
  17. 【PMAC】Chapter3:COM类工厂中CLSD为{XXX}的组件失败
  18. 管理口安装服务器操作系统,管理口安装服务器操作系统
  19. nginx重启 平滑重启
  20. 百慕大群岛失踪者再现之谜

热门文章

  1. oracle数据库备份和还原
  2. 程序员,你的粮草何在?
  3. 利用Ninject实现依赖注入
  4. C# 词典数据结构设计【附demo】
  5. 初学者python笔记(字符串用法解析)
  6. c语言用switch字母判断星期几,c语言程序,输入年月日,判断这一天是这一年的第几天,同时判断这一天是星期几。(用switch语句)...
  7. springboot 优雅停机_Spring boot 2.3优雅下线,距离生产还有多远?
  8. 微课|中学生可以这样学Python(2.2.2节+2.2.5节):关系运算符和集合运算符
  9. 约瑟夫环问题(链表 + 公式)
  10. java post 403_求助啊。。。。。。给服务器POST JSON报403