Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate悲观锁是否与EHCache/Terracotta一起分发?_Hibernate_Transactions_Locking_Jta_Terracotta - Fatal编程技术网

Hibernate悲观锁是否与EHCache/Terracotta一起分发?

Hibernate悲观锁是否与EHCache/Terracotta一起分发?,hibernate,transactions,locking,jta,terracotta,Hibernate,Transactions,Locking,Jta,Terracotta,Hibernate是否可以在Java事务开始时实现悲观锁,或者在Java领域中的所有工作完成后,它是否依赖于应用悲观锁,然后将更改作为数据库事务的一部分应用于数据库 当我有一个Java事务时,我会问这个问题,中途会调用远程web服务,这是非事务性的,因此不能回滚。如果Hibernate对正在处理的数据持有悲观锁,那么事务处理应该被阻止,因为Hibernate知道另一个线程已经在处理这些数据。如果Hibernate本身没有跟踪这些锁,那么Java事务将继续,调用webservice,然后阻塞DB提

Hibernate是否可以在Java事务开始时实现悲观锁,或者在Java领域中的所有工作完成后,它是否依赖于应用悲观锁,然后将更改作为数据库事务的一部分应用于数据库

当我有一个Java事务时,我会问这个问题,中途会调用远程web服务,这是非事务性的,因此不能回滚。如果Hibernate对正在处理的数据持有悲观锁,那么事务处理应该被阻止,因为Hibernate知道另一个线程已经在处理这些数据。如果Hibernate本身没有跟踪这些锁,那么Java事务将继续,调用webservice,然后阻塞DB提交

我真正想要的是Java事务启动,另一个线程尝试启动另一个事务,并阻止/失败,因为相关数据已经有一个正在进行中


当Hibernate使用EHCache作为Terracotta的分布式2LC时,锁定行为会受到怎样的影响?

Hibernate悲观锁是数据库锁。锁定被委派给数据库。二级缓存与此无关。

“Hibernate不会锁定内存中的对象。”


没有什么比RTFM更合适的了:)

值得注意的是,乐观锁定也是集群安全的。谢谢。我想我需要找出在分布式环境中是否有悲观地锁定JTA事务的方法。