java怎么处理一条数据别人在用其人人不能操作?---在线等!

Cactus_hxk 2012-04-24 03:02:25
问题如题,一定要最简单的处理方法,不要去数据库查询的方法?
...全文
563 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cactus_hxk 2012-04-25
  • 打赏
  • 举报
回复
谢谢各位的解答!本来是要做的最后老大说不用处理这个问题了!
昨日凡阳 2012-04-24
  • 打赏
  • 举报
回复
这个可以在数据库层面,加乐观锁或者悲观锁。
直接在底层就给lock住了。
wozhiguanshu 2012-04-24
  • 打赏
  • 举报
回复
一般加锁来实现咯,
够牛叉的话就乐观+悲观一起用。。
dreamover 2012-04-24
  • 打赏
  • 举报
回复
select *, version from table t

提交的时候

update table set ... where id=:id and version=:version
dreamover 2012-04-24
  • 打赏
  • 举报
回复
乐观锁是比较适合的,重要的记录给个字段标志为版本号,两个人拿到的数据同一个版本号的话,谁先提交谁就加一下版本号,另个人提交的时候检查版本号还是不是读出来时候的版本号,是的话提交,不是的话报错拿新数据重新修改提交。
zfz1214 2012-04-24
  • 打赏
  • 举报
回复
貌似问题已经解决了,打酱油路过
cseu 2012-04-24
  • 打赏
  • 举报
回复
最简单的方法应该还是乐观锁。虽然不一定是最优雅的,但一定是简单可行的。
不动数据库,在内存中做标志的方法,都有一些纰漏,为了堵住纰漏,就更复杂了
Cactus_hxk 2012-04-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
LZ是要在什么层面上来锁?
select ... for update 这样可以锁检索出来的记录,直到update结束才释放索,这是数据库端的锁,当然,也可以用某个公共表作为锁
如果在应用程序端锁,可以采用synchronized的方式
[/Quote]

谢谢!
qybao 2012-04-24
  • 打赏
  • 举报
回复
LZ是要在什么层面上来锁?
select ... for update 这样可以锁检索出来的记录,直到update结束才释放索,这是数据库端的锁,当然,也可以用某个公共表作为锁
如果在应用程序端锁,可以采用synchronized的方式

安特矮油 2012-04-24
  • 打赏
  • 举报
回复
原来只是这个。

如果这样的话,给数据一个类似于表示数据版本号的字段,每次更新的时候带上版本号去,更新后版本号++,这样可以避免同时修改了
  • 打赏
  • 举报
回复
乐观锁或者悲观锁
  • 打赏
  • 举报
回复
乐观锁
充电中 2012-04-24
  • 打赏
  • 举报
回复
数据锁?
安特矮油 2012-04-24
  • 打赏
  • 举报
回复
比如是编辑的时候吧:
一个人读出数据的时候,把该数据delete,把数据缓存到内存里供单独的用户处理。用户处理完后写入数据库,当然要解决如果用户终止的操作。如果用户取消或者关闭浏览器的情况等等。

好么你就选择到了数据的时候,通过数据库的行锁,把这条数据锁起来。这样可能更好一些。
Cactus_hxk 2012-04-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
说明白点;
[/Quote]

就是处理同时操作数据的问题?
zwl175369 2012-04-24
  • 打赏
  • 举报
回复
说明白点;

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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