当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:13:00  来源:本站整理

<b>hibernate3学习笔记(二十三)|进阶特点(一)</b>[Java编程]

赞助商链接



  本文“<b>hibernate3学习笔记(二十三)|进阶特点(一)</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

1.悲观锁定:

在多个客户端大概读取同一笔数据或同时更新一笔数据的情形下,必必要有拜候掌握的手段,避免同一个数据被改正而造成混乱,最简单的手段就是对资料举行锁定,在自己举行资料读取或更新等行动时,锁定其他客户端不能对同一笔资料举行任何的行动.

悲观锁定(Pessimistic Locking)一如其名称所示,悲观的认定每次资料存取时,别的的客户端也会存取同一笔资料,因此对该笔资料举行锁定,直到自己操作完成後解除锁定.

悲观锁定普通透过系统或资料库本身的功效来实现,依靠系统或资料库本身供应的锁定机制,Hibernate便是如此,可以操纵Query或Criteria的setLockMode()办法来设定要锁定的表或列(Row)及其锁定情势,可设定的锁定情势有以下的几个:

LockMode.UPGRADE:操纵资料库的for update子句举行锁定.

LockMode.UPGRADE_NOWAIT:利用for update nowait子句举行锁定,在Oracle资料库中利用.

一个设定锁定的例子以下:

Session session = sessionFactory.openSession();
Query query = session.createQuery("from User user");
query.setLockMode("user", LockMode.UPGRADE);
List users = query.list();

...

session.close();这个程式片段会利用以下的SQL举行查询:

Hibernate: select user0_.id as id, user0_.name as name0_, user0_.age as age0_

from user user0_ for update也可以在利用Session的load()或是lock()时指定锁定情势以举行锁定.

别的还有三种加锁情势Hibernate内部自动对资料举行锁定,与资料库无关:

LockMode.WRITE:在insert或update时举行锁定,Hibernate会在save()办法时自动得到锁定.

LockMode.READ:在读取记录时Hibernate会自动得到锁定.

LockMode.NONE:没有锁定.

假如资料库不援助所指定的锁定情势,Hibernate会挑选一个符合的锁定替换,而不是丢出一个例外.


  以上是“<b>hibernate3学习笔记(二十三)|进阶特点(一)</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .