面试疑难点解析——Java数据库开发(九)

简介: 本文主要教大家区分悲观锁与乐观锁,帮助大家巩固Java开发性相关知识,提高面试通过率。

悲观锁的本质是数据库自身所具备的一种处理机制,在数据库的事务里面有一个隔离性的概念,其主要特征是当一个session操作某条数据的时候,其它的session是无法操作的,这就是一种锁的实现,而这种锁是数据库自身所带的功能。之前都是针对更新操作使用的锁,如果在查询的时候也使用锁,那么就加上FOR UPDATE:
SELECT*FORM 表名称FOR UPDATE
表示使用悲观锁,在事务提交或回滚之前该数据都不允许更新。

乐观锁是不使用数据库的处理情况,需要在你真正使用的数据表里面追加一个字段,而这个字段用于做一个版本号,例如:在正常情况下,你的用户表可能只有mid、password,但如果你使用了乐观锁则还需要追加一个字段的列,这个列标识版本号:

1581566128414_CEA6A389-67C3-4C62-903B-BCBCC4073E1B.png

现在假设有一条数据: INSERTINTO member(mid,name,ver)VALUES(‘mldn’,‘hello’,0);假设有两个session要进行该数据的读取,由于没有使用悲观锁,所以这两个session都可以对该数据进行修改操作,第一个session修改了数据,修改后将版本号做了一个“+1”,变为了1,而后另外一个session更新的时候发现版本号不对,则不允许更新。

乐观锁是基于算法的一种实现,实际中会比较麻烦,在Hibernate设计框架里面有此概念,但从开发角度来讲,建议这种操作交由数据库自行处理,建议使用悲观锁。

更多专业知识,面试技巧就在面试一点通,持续更新中……
感谢浏览~
本内容来源于阿里云大学-Java面试技巧

相关文章
|
15天前
|
SQL druid Java
Javaweb之数据库连接池以及lombok类库的详细解析
Javaweb之数据库连接池以及lombok类库的详细解析
28 0
|
15天前
|
SQL 数据库
数据库开发之子查询案例的详细解析
数据库开发之子查询案例的详细解析
13 0
|
15天前
|
SQL 数据库
数据库开发之子查询的详细解析
数据库开发之子查询的详细解析
18 0
|
15天前
|
SQL 存储 数据库
数据库开发表操作案例的详细解析
数据库开发表操作案例的详细解析
9 0
|
15天前
|
SQL 存储 关系型数据库
数据库开发之图形化工具以及表操作的详细解析
数据库开发之图形化工具以及表操作的详细解析
29 0
|
7天前
|
存储 机器学习/深度学习 搜索推荐
深入解析矢量数据库的数据模型与索引机制
【4月更文挑战第30天】本文深入探讨了矢量数据库的数据模型和索引机制。向量数据库以高维向量表示数据,采用稀疏或密集向量形式,并通过数据编码和组织优化存储与检索。索引机制包括基于树的(如KD-Tree和Ball Tree)、基于哈希的(LSH)和近似方法(PQ),加速相似性搜索。理解这些原理有助于利用矢量数据库处理大规模高维数据,应用于推荐系统、图像搜索等领域。随着技术发展,矢量数据库将扮演更重要角色。
|
13天前
|
Java 调度
Java面试必考题之线程的生命周期,结合源码,透彻讲解!
Java面试必考题之线程的生命周期,结合源码,透彻讲解!
39 1
|
13天前
|
监控 Java 测试技术
面试准备不充分,被Java守护线程干懵了,面试官主打一个东西没用但你得会
面试准备不充分,被Java守护线程干懵了,面试官主打一个东西没用但你得会
23 1
|
13天前
|
Java
Java面试挂在线程创建后续,不要再被八股文误导了!创建线程的方式只有1种
Java面试挂在线程创建后续,不要再被八股文误导了!创建线程的方式只有1种
20 1
|
13天前
|
存储 算法 Java
耗时3天写完的HashMap万字解析,争取一篇文章讲透它,面试官看了都直点头!
耗时3天写完的HashMap万字解析,争取一篇文章讲透它,面试官看了都直点头!
46 3

推荐镜像

更多