博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate 乐观锁和悲观锁
阅读量:6570 次
发布时间:2019-06-24

本文共 619 字,大约阅读时间需要 2 分钟。

  hot3.png

悲观锁:对外界操作数据持保守态度。认为一定会发生数据不一致的问题。

悲观锁依靠数据库本身的锁机制。

1.JDBC采用for  update 语句:

eg:select * from tb where id="id" for update;

2.Hibernate

   String sql="查询语句";

   Query query=session.createQuery(sql);
   query.setLockMode("对象",LockModel.UPGRADE);
   hiernate的加锁模式:
   LockMode.NONE : 无锁机制。
   LockMode.WRITE :Hibernate在Insert和Update记录的时候会自动获取。
   LockMode.READ : Hibernate在读取记录的时候会自动获取。
   这三种加锁模式是供hibernate内部使用的,与数据库加锁无关
   LockMode.UPGRADE:利用数据库的for update字句加锁。

单机性能可以接受,但是随着并发量的增加,该机制会导致数据库性能下降。

乐观锁:对外界操作数据持保守态度。认为一定会发生数据不一致的问题。

悲观锁依靠数据库新增version字段的方式。

每次操作数据库的时候,都去校验一次该字段,每次操作一次就要更新一下该字段,通过该种手段来完成锁机制。

转载于:https://my.oschina.net/gm945/blog/469461

你可能感兴趣的文章
《Lua游戏AI开发指南》一2.4 首次运行沙箱
查看>>
《Python数据分析》一1.9 从何处寻求帮助和参考资料
查看>>
Linux 下如何处理包含空格和特殊字符的文件名
查看>>
ASP.Net刷新页面后自动滚动到原来位置方法汇总
查看>>
《像计算机科学家一样思考Python(第2版)》——2.4 脚本模式
查看>>
《循序渐进Linux(第2版) 基础知识 服务器搭建 系统管理 性能调优 虚拟化与集群应用》——1.3 养成良好的Linux操作习惯...
查看>>
《UML面向对象设计基础》—第1章1.12节答案
查看>>
Ubuntu 14.04 LTS: 定制 Unity
查看>>
如何在Ubuntu 13.10上安装Linux内核 3.12
查看>>
《JavaScript忍者秘籍》——1.5 总结
查看>>
《Node学习指南》一2.2 REPL的优势:更好地理解表层之下的JavaScript
查看>>
《Spark Cookbook 中文版》一1.8 使用Tachyon作为堆外存储层
查看>>
运维改革探索(一):用多层级监控实现可视化运维
查看>>
震精 - 数据库还能这样玩 - 三十六计 (下)
查看>>
最右App:架构演进之路
查看>>
React Native和Android整合详解
查看>>
spring-data-elasticsearch api
查看>>
应用迁云之镜像迁移-(3)工具介绍
查看>>
《C语言及程序设计》实践参考——输出这样的整数
查看>>
iOS中分段控制器与UIScrollView结合使用
查看>>