一:测试程序
二:代码分析
(1)debug方法testPessimisticLock,
Account a = (Account) session.load(Account.class, 1,LockMode.UPGRADE);
session.getTransaction().commit();
在session提交的这一行,加上断点。
(2)执行方法testOperate
会发现,改方法并没有成功修改数据
(3)将testPessimisticLock断点走完
(4)testOperate才会成功执行。
三:知识点
LockMode.UPGRADE通常我们就同这个参数,加悲观锁
Account a = (Account) session.load(Account.class, 1,LockMode.UPGRADE);
查看执行的sql语句,就会发现sql语句后面出现了for update
select
account0_.id as id0_0_,
account0_.balance as balance0_0_
from
Account account0_
where
account0_.id=? for update
时间: 2024-11-09 04:49:42