Hibernate 是否可以在 Java 事务开始时实现悲观锁定,或者它是否依赖于在 Java 领域中的所有工作完成后应用悲观锁定,然后将更改作为数据库事务的一部分应用于数据库?
我问,因为我有一个 Java 事务,在此过程中调用了远程 Web 服务,这是非事务性的,因此无法回滚。如果 Hibernate 对正在操作的数据持有悲观锁,那么事务的处理应该被阻塞,因为 Hibernate 知道另一个线程已经在对这些数据进行操作。如果 Hibernate本身不跟踪此类锁,则 Java 事务将继续,调用 Web 服务,然后阻塞 DB 提交。
我真正想要发生的是Java事务启动,另一个线程尝试启动另一个事务,并且阻塞/失败,因为相关数据已经在进行中。
当 Hibernate 将 EHCache 作为 2LC 以分布式方式与 Terracotta 一起使用时,锁定行为会受到怎样的影响?