首页 > 代码库 > 并发问题解决方案
并发问题解决方案
案例原型:对同一商品的库存修改工作
<1>不能通过先查再去修改的方案,通过原生sql进行操作
<2>使用触发器
<3>使用hibernate悲观锁,在查询商品的时候即加锁
<4>使用hibernate乐观锁:在实体类添加version进行版本控制,如果事务操作失败,可提示用户,由用户去决定解决方案;
也可以捕获异常,进行重试机制.具体根据实际的业务需求
案例原型:生成交易单时,交易单号的生成,(查询最大值加1)
<1>同上
<2>同上
<3>使用hibernate悲观锁:
新增一个表temp,存取当前订单号的最大值,每次新增交易单的时候,去temp表去查询,temp表的这条数据进行加锁,不允许任何其他事物
再操作temp.插入交易单后,再去修改temp表中的最大值.为了保证长事物由于锁对性能的影响,尽量在事务方法的末尾去temp表查询和
修改操作
总结:对读操作比较高的,建议使用乐观锁;
对写操作和数据安全比较高的,建议使用悲观锁
并发问题解决方案
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。