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

时间:2011-11-28 09:37:25

标签: hibernate transactions locking jta terracotta

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

我问,因为我有一个Java事务,在一半时间内调用远程Web服务,这是非事务性的,因此无法回滚。如果Hibernate对正在执行的数据持有悲观锁定,则应该阻止事务处理,因为Hibernate知道另一个线程已经在对这些数据进行操作。如果Hibernate 跟踪这些锁本身,那么Java事务将继续,调用web服务,然后阻止数据库提交。

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

当Hibernate使用Terracotta以分布式方式将EHCache用作2LC时,锁定行为如何受到影响?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/transactions.html

没有什么比RTFM更好:)