首页 > 其他 > 详细

并发问题解决方案

时间:2016-12-23 16:18:51      阅读:106      评论:0      收藏:0      [点我收藏+]

案例原型:对同一商品的库存修改工作

<1>不能通过先查再去修改的方案,通过原生sql进行操作

<2>使用触发器

<3>使用hibernate悲观锁,在查询商品的时候即加锁

<4>使用hibernate乐观锁:在实体类添加version进行版本控制,如果事务操作失败,可提示用户,由用户去决定解决方案;

也可以捕获异常,进行重试机制.具体根据实际的业务需求

案例原型:生成交易单时,交易单号的生成,(查询最大值加1)

<1>同上

<2>同上

<3>使用hibernate悲观锁:

新增一个表temp,存取当前订单号的最大值,每次新增交易单的时候,去temp表去查询,temp表的这条数据进行加锁,不允许任何其他事物

再操作temp.插入交易单后,再去修改temp表中的最大值.为了保证长事物由于锁对性能的影响,尽量在事务方法的末尾去temp表查询和

修改操作

总结:对读操作比较高的,建议使用乐观锁;

       对写操作和数据安全比较高的,建议使用悲观锁

 

并发问题解决方案

原文:http://www.cnblogs.com/meisp/p/6214985.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!