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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring hibernate lock是否适用于不同机器上的其他线程?相关的知识,希望对你有一定的参考价值。

HibernateTemplate().refresh(obj, LockMode.UPGRADE);

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

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

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

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

答案

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

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

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

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

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

以上是关于spring hibernate lock是否适用于不同机器上的其他线程?的主要内容,如果未能解决你的问题,请参考以下文章

GWT 开发模式 + Spring 3.1 + Hibernate 4.0.1 中的异常

Spring Boot 的 Hibernate 字段命名问题(命名策略)

Spring Boot 的 Hibernate 字段命名问题(命名策略)

对于大型项目,Spring Data JPA 与 Hibernate 有何不同?

struts2 hibernate spring 三大框架有啥区别,他们各自适用的范围是啥?各自适用的场合是啥?

使用 Spring @Transactional 管理 Hibernate 事务