JPA :Как работает блокировка чтения?

, я пытаюсь понять, каков эффект вызова объекта EntityManager.lock (, LockModeType.READ ). Документация по API звучит для меня очень запутанно.

Если у меня есть параллельные потоки, а поток 1 вызывает блокировку (объекта, LockModeType.READ ), может ли поток 2 по-прежнему читать и записывать объект?

Что я узнал на данный момент:

Тип блокировки READ в JPA1 такой же, как OPTIMISTIC в JPA2. Если такая блокировка установлена, EntityManager проверяет атрибут версии перед фиксацией транзакции, но не обновляет его. Нашел объяснение режиму блокировки ОПТИМИСТИК:Ссылка . Найдите OPTIMISTIC (READ )LockMode Пример. Насколько я понимаю, установка блокировки чтения в потоке 1 не влияет на потоки 2...n. Все остальные потоки по-прежнему могут читать и записывать объект. Но когда транзакция в потоке 1 фиксируется, а другой поток обновляет сущность, транзакция в потоке 1 откатывается.

Я правильно понимаю?

7
задан rubberduck 18 April 2012 в 20:12
поделиться