系统学习hibernate之十二:hibernate中悲观锁和乐观锁.doc

系统学习hibernate之十二:hibernate中悲观锁和乐观锁.doc

ID:29162385

大小:75.50 KB

页数:5页

时间:2018-12-17

系统学习hibernate之十二:hibernate中悲观锁和乐观锁.doc_第1页
系统学习hibernate之十二:hibernate中悲观锁和乐观锁.doc_第2页
系统学习hibernate之十二:hibernate中悲观锁和乐观锁.doc_第3页
系统学习hibernate之十二:hibernate中悲观锁和乐观锁.doc_第4页
系统学习hibernate之十二:hibernate中悲观锁和乐观锁.doc_第5页
资源描述:

《系统学习hibernate之十二:hibernate中悲观锁和乐观锁.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、hibernate中经常用到当多个人对同一数据同时进行修改的时候,会发生脏数据,造成数据的不一致性,解决办法是可以通过悲观锁和乐观锁来实现。悲观锁:在数据有加载的时候就给其进行加锁,直到该锁被释放掉,其他用户才可以进行修改,优点:数据的一致性保持得很好,缺点:不适合多个用户并发访问。当一个锁住的资源不被释放掉的时候,这个资源永远不会被其他用户进行修改,容易造成无限期的等待。乐观锁:就是在对数据进行修改的时候,对数据才去版本或者时间戳等方式来比较,数据是否一致性来实现加锁。优点比较好。1、在悲观锁中,只要在加载的时候,才去session中的load方法,进行枷锁,session.load(***

2、*.class,1,LockMode.UPDATE);     Hibernate将事务管理委托给底层的JDBC或者JTA,默认是基于JDBCTransaction的。     Hibernate支持“悲观锁(PessimisticLocking)”和“乐观锁(OptimisticLocking)”。     悲观锁对数据被外界修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制。Hibernate通过使用数据库的forupdate子句实现了悲观锁机制。Hibernate的加锁模式有:     1.LockMode.NONE:无锁机制    

3、 2.LockMode.WRITE:Hibernate在Insert和Update记录的时候会自动获取     3.LockMode.READ:Hibernate在读取记录的时候会自动获取     4.LockMode.UPGRADE:利用数据库的forupdate子句加锁     5.LockMode.UPGRADE_NOWAIT:Oracle的特定实现,利用Oracle的forupdatenowait子句实现加锁2、乐观锁大多是基于数据版本(Version)记录机制实现。Hibernate在其数据访问引擎中内置了乐观锁实现,可以通过class描述符的optimistic-lock属性结合v

4、ersion描述符指定。optimistic-lock属性有如下可选取值:     1.none:无乐观锁     2.version:通过版本机制实现乐观锁     3.dirty:通过检查发生变动过的属性实现乐观锁     4.all:通过检查所有属性实现乐观锁例子:1、悲观锁:1>POJO类publicclassPersimisticLocking{ privateintid;  privateStringItem;  privateintprice;//省略setter、getter方法}2>、POJO类的映射文件 1 2

5、ibernate-mapping PUBLIC  3    "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 4    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 5 6     7         8            

6、enerator class="native"/> 9        10        11        12    133>、加载测试方法 1public void testLoad1() 2    { 3        Session session = null; 4        try { 5            session = HibernateUtil.getSession(); 6            ses

7、sion.beginTransaction(); 7            OptimisticLocking o = (OptimisticLocking)session.load(OptimisticLocking.class, 1); 8            System.out.println("o.item="+o.getItem()); 9            System.out

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。