JSP 更新数据的问题

我看见佛 2015-12-01 03:57:20
比如两个用户:
同时操作一行数据。
用户A先提交。
用户B后提交。
------------------------------
B用户的数据更新会把A用户的数据给覆盖掉?如何防止这个情况呢?

以前有个做法是对比全表所有字段,但要列出在WHERE 条件中太麻烦了。
...全文
178 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
CrazyTree_9527 2016-04-20
  • 打赏
  • 举报
回复
不知道你是否用过hibernate,里面就有version版本控制,用来防止你说的问题,如果是oracle,还可以在sql上面增加for update wait,锁表,这个锁表属于行级锁,where的锁掉
我看见佛 2015-12-03
  • 打赏
  • 举报
回复
引用 3 楼 CQL_1989 的回复:
用乐观锁。。用一个字段version。。如果A更新的时候。。version+1 那么B提交的时候。看看B取出来的version和数据库的version是否一致。。。一致。。就可以提交。否则就标示该数据被更新。 hibernate的版本控制。。。完全可以实现。。。
你这个方法很好哟。 这方面可否介绍详细一些呢?,加分喽,各位HELPER.
Defonds 2015-12-02
  • 打赏
  • 举报
回复
一个用户操作时,对数据进行锁定; 增加操作记录。
SunnyKandy1224 2015-12-02
  • 打赏
  • 举报
回复
在每次提交数据的时候,要记住提交数据的有效性哈!
比特灵 2015-12-02
  • 打赏
  • 举报
回复
分为两段: 1,并发 -- 两次请求同时修改数据,对于这两个请求来说,各自的数据都是有效的,只是发生了并发,需要用锁来控制。 2,数据失效 -- 两次请求有先有后,例如A读取了数据,然后在A修改的过程中B也读取了数据并发生了修改,此时需要使用上面的哥们提出的版本的办法。
RollBack2010 2015-12-02
  • 打赏
  • 举报
回复
加上synchronized这个就保证数据的原子性了
CrazyTree_9527 2015-12-02
  • 打赏
  • 举报
回复
用乐观锁。。用一个字段version。。如果A更新的时候。。version+1 那么B提交的时候。看看B取出来的version和数据库的version是否一致。。。一致。。就可以提交。否则就标示该数据被更新。 hibernate的版本控制。。。完全可以实现。。。
能源恒观 2015-12-02
  • 打赏
  • 举报
回复
你是想在a用户提交的时候b不能提交吗,像12306买票那样

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧