博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate4.3 并发控制
阅读量:6331 次
发布时间:2019-06-22

本文共 855 字,大约阅读时间需要 2 分钟。

一、悲观锁

  悲观锁不是Hibernate的锁,而是数据库的update锁,select * from item for update.   Hibernate 就是利用这种锁机制,在查询上上锁。 悲观锁的作用范围太大,查询也被锁住

1 public void updateStock(){ 2         Session session = HibernateUtils.getSession(); 3         Transaction tx = session.beginTransaction(); 4         try{ 5             //使用悲观锁查询,如果一个请求在查询时,另一个请求被阻塞在外 6             Item item = (Item) session.load(Item.class, 1, LockOptions.UPGRADE); 7             item.setStock(item.getStock() - 2); 8             tx.commit(); 9         } catch (Exception e) {10             e.printStackTrace();11             tx.rollback();12         }finally{13             HibernateUtils.closeResource(session);14         }15     }

二、乐观锁

  乐观锁使用应用程序上的版本控制(由程序逻辑来实现的)来避免可能出现的并发问题。

  1、类中添加version字段

1 private Integer version;

  2、在类的hbm.xml配置文件中配置相应的字段

1 
2

 

转载于:https://www.cnblogs.com/cat-fish6/p/8679440.html

你可能感兴趣的文章
大白话讲解闭包笔试题
查看>>
好用的API文档--在线版
查看>>
Linux 性能測试工具
查看>>
剑指offer——优化时间和空间效率(第五章)
查看>>
门面(Facade)模式--医院,保安系统实例
查看>>
linux(Ubuntu/Centos) iproute 路由IP地址等命令集合,查看端口链接
查看>>
php 常用的JS
查看>>
text-overflow
查看>>
python之路之面向对象3
查看>>
codeforces 940D 比赛总结
查看>>
ulua
查看>>
面向对象与面向过程区别
查看>>
D3js-实现图形拖拽及双击恢复
查看>>
示例可重用的web component方式组织angular应用模块
查看>>
【RS】如何从USGS上下载LANDSAT数据
查看>>
8张图理解Java(转)
查看>>
JVM
查看>>
Zend-MVC事件
查看>>
sql 截取字符串
查看>>
【札记】设计的五个原则
查看>>