- 浏览: 84235 次
- 性别:
- 来自: 上海
文章分类
最新评论
悲观锁
悲观锁的实现,通常依赖于数据库机制,在整个过程中将数据锁定,其它任何用户都不能读取或修改!
public void testLoad1() { Session session = null; try { session = HibernateUtils.getSession(); session.beginTransaction(); // LockMode设置锁类型,不支持lazy。 Inventory inv = (Inventory)session.load(Inventory.class, 1, LockMode.UPGRADE); System.out.println("itemName=" + inv.getItemName()); System.out.println("quantity=" + inv.getQuantity()); inv.setQuantity(inv.getQuantity() - 200); session.update(inv); session.getTransaction().commit(); }catch(Exception e) { e.printStackTrace(); session.getTransaction().rollback(); }finally { HibernateUtils.closeSession(session); } }
---------------------------------------------------------------------------------------------
乐观锁
大多数基于数据版本记录机制(version)实现,一般是在数据库表中加入一个version字段
读取数据时将版本号一同读出,之后更新数据时版本号加一,如果提交数据时版本号小于或等于数据表中
的版本号,则认为数据是过期的,否则给予更新
hibernate自动控制version。
<class name="com.bjsxt.hibernate.Inventory" table="t_inventory" optimistic-lock="version"> <id name="itemNo"> <generator class="native"/> </id> <version name="version"/> <property name="itemName"/> <property name="quantity"/> </class>
public class Inventory { private int itemNo; private String itemName; private int quantity; private int version; public int getItemNo() { return itemNo; } public void setItemNo(int itemNo) { this.itemNo = itemNo; } public String getItemName() { return itemName; } public void setItemName(String itemName) { this.itemName = itemName; } public int getQuantity() { return quantity; } public void setQuantity(int quantity) { this.quantity = quantity; } public int getVersion() { return version; } public void setVersion(int version) { this.version = version; } }
发表评论
-
Fetch抓取策略
2008-12-21 15:30 10591 hibernate抓取策略(单端代理的批量抓取) 保持默 ... -
查询缓存
2008-12-21 13:27 2528查询缓存是针对普通属性结果集的缓存,对实体对象的结果集只缓存i ... -
二级缓存
2008-12-21 09:55 838二级缓存也称进程级的缓存或SessionFactory级的缓存 ... -
一级缓存
2008-12-20 21:18 846一级缓存很短和session的生命周期一致,一级缓存也叫ses ... -
HQL 原生SQL查询 外置命名查询 查询过滤器 DML风格的查询
2008-12-20 15:04 1295在hql中关键字不区分大小写,但是属性和类名区分大小写 1、简 ... -
冬夜读书示子律
2008-12-19 16:11 814古人学问无遗力,少壮功夫老始成。 纸上得来终觉浅,绝知此事要躬 ... -
Set Map Arrary List 集合映射
2008-12-19 14:50 861<class name="com.bjsxt. ... -
composite 映射
2008-12-19 10:48 783通常将复合主键相关的属性,单独放到一个类中 * 此类必须实现序 ... -
Component 映射
2008-12-19 09:54 683在hibernate中,component是某个实体的逻辑组成 ... -
继承映射
2008-12-18 21:05 868继承映射分为三种: 1 单表继承:每颗类继承树使用一个表(ta ... -
LAZY策略
2008-12-18 14:26 739hibernate lazy策略可以使用在: * <cl ... -
Many-to-Many
2008-12-18 10:36 786hibernate多对多关联映射(单向User----> ... -
one-to-many
2008-12-17 20:19 1063hihernate一对多关联映射 ... -
session --------- flush() 和 evict()
2008-12-17 14:00 2272session flush方法主要做了 ... -
数据库隔离级别
2008-12-17 13:57 822隔离级别 脏读 不可重复读 幻读 R ... -
One-to-one( 2 唯一外键关联)
2008-12-17 11:12 914hibernate一对一唯一外键关联映射(单向关联Person ... -
one-to-one(1主键关联)
2008-12-16 20:23 1780主键关联-----单向 <class name=&qu ... -
many-to-one
2008-12-16 20:15 755<class name="com.bjsx ... -
Hibernate3包问题org/slf4j/impl/StaticLoggerBinder
2008-12-15 13:55 4267Exception in thread "main& ...
相关推荐
《Hibernate 悲观锁与乐观锁详解》 在多用户并发访问的环境中,数据库管理系统必须具备有效的数据访问控制机制,以确保数据的一致性和完整性。Hibernate,作为一款流行的Java持久化框架,提供了两种主要的锁定策略...
在Java的持久化框架Hibernate中,悲观锁和乐观锁是两种重要的并发控制策略,它们用于管理数据库中的数据在多线程环境下的访问安全。本文将深入探讨这两种锁机制的原理、应用场景及其区别。 首先,我们来理解悲观锁...
乐观锁与悲观锁相反,它假定数据不太可能被其他线程或进程修改,因此不会一开始就锁定数据。这种锁机制通常不会直接使用数据库级别的锁定机制,而是通过版本号或其他标记来检测数据是否已被其他事务修改。 **1. ...
### 面试必备之乐观锁与悲观锁详解 #### 一、悲观锁与乐观锁的概念 悲观锁和乐观锁是计算机科学中用于处理并发控制的两种不同策略,它们主要应用于多线程环境下数据的一致性和完整性保护。两种锁的设计哲学反映了...
本文实例讲述了mysql 悲观锁与乐观锁。分享给大家供大家参考,具体如下: 悲观锁与乐观锁是人们定义出来的概念,你可以理解为一种思想,是处理并发资源的常用手段。 不要把他们与mysql中提供的锁机制(表锁,行锁,...
在关系型数据库中,悲观锁与乐观锁是解决资源并发场景的解决方案,接下来将详细讲解:magnifying_glass_tilted_right:一下这两个并发解决方案的实际使用及优缺点。 首先定义一下数据库,做一个最简单的库存表,如下...
除了上述的乐观锁和悲观锁实现技巧之外,ThinkPHP框架还提供了其他很多与数据操作和事务管理相关的功能和技巧。例如,在ThinkPHP中,可以使用事务控制相关的类和方法,如mysqli的transaction方法开始事务,commit...
在处理并发问题时,Hibernate提供了悲观锁和乐观锁两种机制。 悲观锁假设并发环境中的冲突是常态,因此在读取数据时就立即锁定,直到事务结束才释放。在Hibernate中,可以通过设置`@LockModeType.PESSIMISTIC_READ`...
悲观锁和乐观锁是两种常见的锁定策略,它们各有特点,适用于不同的场景。 **悲观锁**(Pessimistic Lock)的名字来源于其悲观的态度,它认为数据随时可能被其他事务修改,因此在读取数据时就立即进行加锁,防止其他...
介绍数据库事务的定义和事务带来的问题,详细讲解乐观锁与悲观锁的区别
### Hibernate的乐观锁与悲观锁 #### 一、引言 在并发环境下,尤其是在金融、电商等业务场景中,确保数据的一致性和完整性至关重要。**Hibernate**作为一种流行的Java持久层框架,提供了多种机制来处理并发控制...
并发控制—悲观锁和乐观锁
Hibernate 锁机制_悲观锁和乐观锁 Hibernate 锁机制是指在数据库访问中,为了维护数据的一致性和正确性,所采取的一些机制来防止数据的并发访问和修改。 Hibernate 中有两种锁机制:悲观锁和乐观锁。 一、悲观锁...
【Hibernate乐观锁与悲观锁详解】 在开发过程中,尤其是在并发环境下,确保数据的一致性和完整性至关重要。Hibernate,作为Java领域广泛使用的ORM框架,提供了一种处理并发数据访问冲突的手段,那就是锁机制。主要...
悲观锁和乐观锁是两种常见的并发控制策略,用于在多任务环境下确保数据一致性。它们各自有不同的工作原理和适用场景。 悲观锁(Pessimistic Lock)正如其名,它假设并发环境中会发生频繁的冲突,因此在读取数据时就...
【标题】:“面试必备之乐观锁与悲观锁” 【描述】:“面试必备之乐观锁与悲观锁.pdf”涉及的是并发控制中的两种重要锁机制——悲观锁和乐观锁,它们是多线程环境下确保数据一致性的重要手段。 【标签】:“求职...