PESSIMISTIC_WRITE的奇怪行为?

时间:2011-07-03 23:41:29

标签: jpa java-ee ejb-3.0 jpa-2.0

我是JPA 2.0锁定的新手,所以可能是我遗漏了一些东西。

使用NetBeans,我尝试调试无状态会话Bean。我试图在两个线程之间切换来检查这个概念:

   em.lock(entity, LockModeType.PESSIMISTIC_WRITE);
    em.persist(entity);
    try {
        em.flush();
    } catch (Exception e) {
        System.out.println("Already Locked!");
    }

我让第一个过程完成

  

em.flush();

(无例外)。然后,我切换到第二个过程。令人惊讶的是 - 只有在第一个流程退出该功能后,在第一行后暂停,继续

注意:使用LockModeType.OPTIMISTIC完成所有工作。

这是正常行为吗?我错过了什么吗? here它似乎以不同的方式表现。

谢谢,

丹尼

1 个答案:

答案 0 :(得分:1)

这是完全正常的行为。锁在事务提交/回滚中释放,并且由于调用em.flush()而不会发生。