打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Hibernate入门之悲观锁定(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)。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Hibernate支持两种锁机制
ibernate的事务和并发(5)
hibernate事务的一点东西
事务的乐观锁和悲观锁
hibernate getHibernateTempelete() get() load()
翻译的Hibernate的Session的javadoc
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服