Hibernate事务处理的悲观锁和乐观锁
来源:互联网 发布:windows 音量 编辑:程序博客网 时间:2024/05/22 03:32
为了考虑并发的效率,把
hibernate.connection
.isolation设置为2,同时还要解决重复读和幻读的问题。
①悲观锁:(需要依赖于数据库的锁),悲观锁的思想是:每次执行一个事务,这个事务都认为一定会有其它的事务来干扰自己。所以悲观锁的做法是,不管有没有事务将要来干扰自己,一上来就将自己需要操作的东西加上锁,直到自己操作完了才让别的事务操作。这种设计的缺点是效率降低。
select account0_.id as id0_0_, account0_.balance as balance0_0_ from Account account0_ where account0_.id=? for update load(xx.class,I,LockMode.UPGRADE) LockMode.None:无锁模式,tansaction结束时自动切换到此模式 LockMode.read:在查询时Hibernate会自动获取锁 LockMode.write insert update会自动获取锁 @Test public void testAddLock(){ Session session=sf.getCurrentSession(); session.beginTransaction(); Account a=(Account) session.load(Account.class, 2,LockMode.UPGRADE); int balance=a.getBalance()-100; a.setBalance(balance); session.getTransaction().commit(); } ②乐观锁:(不依赖与数据库的锁,比悲观锁的效率高),乐观锁的思想是:每次执行一个事务,这个事务乐观的认为不会有其它的事务来干扰自己。只是在操作的东西上加上一个版本号,操作结束和比较一下操作前的版本号,如果一致说明没有被其它事务干扰,否则就被其它事务所干扰。当发现版本不一致时,采取相应的操作。
@Test public void testAddLock1(){ Session session=sf.openSession(); Session session1=sf.openSession(); session.beginTransaction(); Account a=(Account) session.load(Account.class, 1); a.setBalance(900); session1.beginTransaction(); Account a1=(Account) session1.load(Account.class, 1); a1.setBalance(1100); session.getTransaction().commit(); System.out.println("the vesion :"+a.getVersion()); session1.getTransaction().commit(); System.out.println("the vesion :"+a1.getVersion()); session.close(); session1.close(); }
- Hibernate事务处理的悲观锁和乐观锁
- Hibernate之事务处理(悲观锁和乐观锁)
- Hibernate的悲观锁和乐观锁
- hibernate的 悲观锁和乐观锁
- Hibernate的悲观锁和乐观锁
- hibernate的悲观锁和乐观锁
- Hibernate的悲观锁和乐观锁
- Hibernate的悲观锁和乐观锁
- Hibernate的悲观锁和乐观锁
- Hibernate的悲观锁和乐观锁
- Hibernate的悲观锁和乐观锁
- Hibernate 的悲观锁和乐观锁
- Hibernate的悲观锁和乐观锁
- hibernate的悲观锁和乐观锁
- Hibernate的悲观乐观锁
- 【Hibernate】Hibernate对“悲观”和“乐观”锁的支持
- hibernate中的悲观锁和乐观锁
- hibernate中的悲观锁和乐观锁
- 用C实现程序的多态性
- 我对AutoCompleteTextBox的理解
- sicily 1090
- 生活随笔:换sdk的惨痛升级
- 僵尸进程
- Hibernate事务处理的悲观锁和乐观锁
- 阻塞式终止子进程
- linux线程高效编程
- OpenGL纹理贴图 旋转的立方体
- 开发工程师人生之路(强烈推荐,分析的透彻!)
- struts2 iterator 迭代标签只显示前五条记录
- web cache说明
- 不写程序的日子
- 有点乱