spring hibernate lock是否适用于不同机器上的其他线程?

问题描述 投票:1回答:1
HibernateTemplate().refresh(obj, LockMode.UPGRADE);

上面的行会阻止所有线程,包括不同机器上的线程继续执行吗?

这个锁什么时候会被释放?

它是在休眠会话结束时吗?

锁定释放后获取锁定并唤醒现有线程的成本是多少?谢谢

java spring hibernate transactions locking
1个回答
0
投票

Hibernate锁请求被委托给数据库,因此不会发生内存中的Java锁定。

LockMode.Upgradeequivalent to PESSIMISTIC_WRITE,意味着在相关的数据库行上采用了独占锁。

当前锁定将阻止其他事务获取此特定行的共享/独占锁,直到当前事务结束(提交或回滚)。

如果其他线程不需要采用此特定数据库行锁定,则不会发生争用。

线程没有被唤醒,就像在Java中发生的那样。等待锁定的数据库进程永远不会进入休眠状态。您也可以配置锁定获取的时间间隔。

© www.soinside.com 2019 - 2024. All rights reserved.