Странное поведение для PESSIMISTIC_WRITE? - PullRequest
1 голос
/ 04 июля 2011

Я новичок в блокировке JPA 2.0, поэтому, возможно, я что-то упустил.

Используя NetBeans, я попытался отладить Сессионный компонент без сохранения состояния.Я попытался переключиться между двумя потоками, чтобы изучить концепцию:

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

Я позволил первому процессу завершиться

em.flush ();

(без исключений).Затем я переключился на второй процесс.Удивительно - он сделал паузу после первой строки , а продолжил только после того, как первый процесс вышел из функции.

Примечание: Все это работало, как и ожидалось, с LockModeType.OPTIMISTIC.

Это нормальное поведение?я что-то пропустил? здесь кажется, что он ведет себя по-другому.

Спасибо,

Дэнни

1 Ответ

1 голос
/ 18 сентября 2011

Это совершенно нормальное поведение.Блокировка снята при фиксации / откате транзакции, и это не происходит вследствие вызова em.flush ().

...