hibernate的 悲观锁和乐观锁
2012-03-22 19:59
232 查看
Hibernate悲观锁:指的是对数据被外界(包括本系统当前的其他事务,以及来自
外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定
状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能
真正保证数据访问的排他性。
在数据有加载的时候就给其进行加锁,直到该锁被释放掉,其他用户才可以进行修改,优点:数据的一致性保持得很好,缺点:不适合多个用户并发访问。当一个锁住的资源不被释放掉的时候,这个资源永远不会被其他用户进行修改,容易造成无限期的等待。
LockMode.NONE : 无锁机制。
LockMode.WRITE :Hibernate在Insert和Update记录的时候会自动 获取。
LockMode.READ : Hibernate在读取记录的时候会自动获取。
Hibernate乐观锁:就是在对数据进行修改的时候,对数据才去版本或者时间戳等方式来比较,数据是否一致性来实现加锁。优点比较好。
相对悲观锁而言,乐观锁机制采取了更加宽松的加锁机制。悲观锁大多数情况下依 靠数据库的锁机制实现,以保证操作最大程度的独占性。但随之而来的就是数据库 性能的大量开销,特别是对长事务而言,这样的开销往往无法承受。 如一个金融系统,当某个操作员读取用户的数据,并在读出的用户数据的基础上进 行修改时(如更改用户帐户余额),如果采用悲观锁机制,也就意味着整个操作过 程中(从操作员读出数据、开始修改直至提交修改结果的全过程,甚至还包括操作 员中途去煮咖啡的时间),数据库记录始终处于加锁状态,可以想见,如果面对几
百上千个并发,这样的情况将导致怎样的后果。
外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定
状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能
真正保证数据访问的排他性。
在数据有加载的时候就给其进行加锁,直到该锁被释放掉,其他用户才可以进行修改,优点:数据的一致性保持得很好,缺点:不适合多个用户并发访问。当一个锁住的资源不被释放掉的时候,这个资源永远不会被其他用户进行修改,容易造成无限期的等待。
LockMode.NONE : 无锁机制。
LockMode.WRITE :Hibernate在Insert和Update记录的时候会自动 获取。
LockMode.READ : Hibernate在读取记录的时候会自动获取。
Hibernate乐观锁:就是在对数据进行修改的时候,对数据才去版本或者时间戳等方式来比较,数据是否一致性来实现加锁。优点比较好。
相对悲观锁而言,乐观锁机制采取了更加宽松的加锁机制。悲观锁大多数情况下依 靠数据库的锁机制实现,以保证操作最大程度的独占性。但随之而来的就是数据库 性能的大量开销,特别是对长事务而言,这样的开销往往无法承受。 如一个金融系统,当某个操作员读取用户的数据,并在读出的用户数据的基础上进 行修改时(如更改用户帐户余额),如果采用悲观锁机制,也就意味着整个操作过 程中(从操作员读出数据、开始修改直至提交修改结果的全过程,甚至还包括操作 员中途去煮咖啡的时间),数据库记录始终处于加锁状态,可以想见,如果面对几
百上千个并发,这样的情况将导致怎样的后果。
相关文章推荐
- Hibernate 乐观锁和悲观锁
- Hibernate事务与并发问题处理(乐观锁与悲观锁)
- 数据库事务隔离机制以及hibernate悲观锁和乐观锁
- Hibernate悲观锁-乐观锁
- Hibernate解决高并发问题之:悲观锁 VS 乐观锁
- Hibernate 悲观锁,乐观锁
- Hibernate中悲观锁和乐观锁
- Hibernate中的悲观锁定和乐观锁定
- hibernate 悲观锁乐观锁
- Hibernate事务、隔离级别、与并发问题处理(乐观锁与悲观锁)
- hibernate中的乐观锁和悲观锁
- Hibernate的悲观锁和乐观锁
- Hibernate中的悲观锁与乐观锁
- 细谈Hibernate之悲观锁和乐观锁解决hibernate并发
- hibernate中的悲观锁和乐观锁的实现
- Hibernate、乐观锁和悲观锁
- Hibernate的乐观锁与悲观锁
- Hibernate悲观锁与乐观锁
- Hibernate 悲观锁和乐观锁
- Hibernate悲观锁定与乐观锁定区别 - esffor - JavaEye技术网站