hibernate悲观锁和乐观锁
2013-05-21 18:04
183 查看
悲观锁定:假定在任何时刻存取数据时,都可能有一个客户也正在存取同一笔数据,因而对数据采取了数据库层次的锁定状态,在锁定的时间内其他的客户不能对资料进行存取。
乐观锁定:认为当前事务操作数据库资源时,很少或者不会有其他事务访问该数据资源,因此不能用数据级别上的锁定,完全依靠数据库的隔离级别来自动管理锁的工作。
对应用程序采取版本控制手段来避免可能出现的并发问题。
hibernate锁定模式
org.hibernate包下有一个名为 LockMode 的类,该类包含hibernate的主要锁定模式。
LockMode.NONE:默认的锁定模式
LockMode.READ
LockMode.UPGRADE
LockMode.UPGRADE_NOWAIT
LockMode.FORCE
悲观锁
显示设定锁定模式来设置悲观锁定,设置悲观锁定几种方式如下:
(1)调用Session.load()
(3)调用Query.setLockMode()
乐观锁
在hibernate中,主要由hibernate提供的版本控制功能来实现乐观锁定。
对象关系的映射文件中的<version>和<timestamp>具有版本控制功能。
<version>:利用一个递增的整数来跟踪数据库表中记录的版本
<timestamp>:利用时间戳来跟踪数据库中记录的版本
version:后提交的无法提交
timestamp:更新的时间和数据库里面的时间相比,数据库里的时间比较新,则无法提交
在映射文件中添加如下字段(举例)
乐观锁定:认为当前事务操作数据库资源时,很少或者不会有其他事务访问该数据资源,因此不能用数据级别上的锁定,完全依靠数据库的隔离级别来自动管理锁的工作。
对应用程序采取版本控制手段来避免可能出现的并发问题。
hibernate锁定模式
org.hibernate包下有一个名为 LockMode 的类,该类包含hibernate的主要锁定模式。
LockMode.NONE:默认的锁定模式
LockMode.READ
LockMode.UPGRADE
LockMode.UPGRADE_NOWAIT
LockMode.FORCE
悲观锁
显示设定锁定模式来设置悲观锁定,设置悲观锁定几种方式如下:
(1)调用Session.load()
Session session = getSession(); Student student = (Student)session.load(Student.class, 6,LockMode.NONE);(2)调用Session.lock()
Session session = getSession(); Student student = (Student)session.load(Student.class, 6); session.lock(student, LockMode.UPGRADE);
(3)调用Query.setLockMode()
Query query = getSession().createQuery("from Student student"); query.setLockMode("student", LockMode.NONE); query.list();
乐观锁
在hibernate中,主要由hibernate提供的版本控制功能来实现乐观锁定。
对象关系的映射文件中的<version>和<timestamp>具有版本控制功能。
<version>:利用一个递增的整数来跟踪数据库表中记录的版本
<timestamp>:利用时间戳来跟踪数据库中记录的版本
version:后提交的无法提交
timestamp:更新的时间和数据库里面的时间相比,数据库里的时间比较新,则无法提交
在映射文件中添加如下字段(举例)
<version name="ver" type="java.lang.Integer"> <colomn name="ver" not-null="true"/> </version>注意:在应用程序中,不需要为version属性赋值,在持久化类对象时,Hibernate会自动为其赋初值0
相关文章推荐
- 笔记---Hibernate并发(悲观锁和乐观锁)
- Hibernate的LockMode(悲观锁和乐观锁)
- Hibernate入门BLOG[十五、Hibernate的乐观锁与悲观锁]
- 【Hibernate】Hibernate对“悲观”和“乐观”锁的支持
- hibernate中的悲观锁和乐观锁的实现
- 事务隔离机制以及hibernate悲观锁和乐观锁
- Hibernate、乐观锁和悲观锁
- Hibernate中的悲观锁与乐观锁
- Hibernate的悲观锁和乐观锁
- Hibernate的乐观锁与悲观锁
- hibernate 乐观锁与悲观锁使用
- Hibernate中的悲观锁和乐观锁
- Java - 锁机制有什么用?简述Hibernate的悲观锁和乐观锁机制。
- Hibernate的悲观锁和乐观锁(1)
- Hibernate第七课--事务,悲观锁,乐观锁
- Hibernate 乐观锁与悲观锁
- 15-hibernate中的悲观锁和乐观锁
- Hibernate事务与并发问题处理(乐观锁与悲观锁)
- Hibernate、乐观锁和悲观锁
- hibernate悲观锁与乐观锁