根据 JPA 2.1 规范...
锁定模式
PESSIMISTIC_READ
、PESSIMISTIC_WRITE
和PESSIMISTIC_FORCE_INCREMENT
用于立即获得长期数据库锁定。
我假设一个悲观锁总是会触发SELECT ... FOR UPDATE
数据库上的 SQL,无论使用什么锁模式。现在有三个问题:
- 如果正确,假设是正确的还是这条规则有例外?
- 给定一个
SELECT ... FOR UPDATE
锁定的行。锁定的行不能被任何其他事务更新,除了锁定它的事务? - 可以通过对事务执行提交或回滚来释放锁。如果应用程序(以及锁定行的事务)突然终止而没有对事务执行提交或回滚,锁会发生什么情况?