chho的专栏

对于整个世界我微不足道,但是我对于自己确是全部

用户操作
[即时聊天] [发私信] [加为好友]
常浩ID:chho
76451次访问,排名1318好友0人,关注者1
chho的文章
原创 106 篇
翻译 0 篇
转载 0 篇
评论 24 篇
chho的公告


名字:Chho
JAVA程序员,现在对Linux产生了浓厚的兴趣。

我的Mail:
最近评论
文章分类
收藏
    相册
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 Hibernate入门28 - 悲观锁定收藏

    新一篇: Hibernate入门 29 - 乐观锁定 | 旧一篇: Hibernate入门27 - 事务管理

    入门 28 - 悲观锁定

     在多个客户端可能读取同一笔数据或同时更新一笔数据的情况下,必须要有访问控制的手段,防止同一个数据被修改而造成混乱,最简单的手段就是对数据进行锁定,在自己进行数据读取或更新等动作时,锁定其它客户端不能对同一笔数据进行任何的动作。
     悲观锁定(Pessimistic Locking)一如其名称所示,悲观的认定每次资料存取时,其它的客户端也会存取同一笔数据,因此对该笔数据进行锁定,直到自己操作完成后解除锁定。

     悲观锁定通常透过系统或数据库本身的功能来实现,依赖系统或数据库本身提供的锁定机制,Hibernate即是如此,我们可以利用Query或Criteria的setLockMode()方法来设定要锁定的表或列(row)及其锁定模式,锁定模式有以下的几个:

    • LockMode.WRITE:在insert或update时进行锁定,Hibernate会在save()方法时自动获得锁定。
    • LockMode.UPGRADE:利用SELECT … FOR UPDATE进行锁定。
    • LockMode.UPGRADE_NOWAIT:利用SELECT … FOR UPDATE NOWAIT进行锁定,在Oracle环境下使用。
    • LockMode.READ:在读取记录时Hibernate会自动获得锁定。
    • LockMode.NONE:没有锁定。

     也可以在使用Session的load()或是lock()时指定锁定模式以进行锁定。
     如果数据库不支持所指定的锁定模式,Hibernate会选择一个合适的锁定替换,而不是丢出一个例外(Hibernate参考手册10.6)。

    发表于 @ 2005年01月27日 20:52:00|编辑

    新一篇: Hibernate入门 29 - 乐观锁定 | 旧一篇: Hibernate入门27 - 事务管理

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © chho