Какова область действия блокировки в Spring Data JPA / Hibernate?

При использовании Spring Data JpaRepository, если метод findOneById(...) аннотирован с помощью @Lock(LockModeType.PESSIMISTIC_WRITE) (или любого другого), какова область действия блокировки, т.е. е. как долго он активен? Только пока выполняется запрос выбора или пока транзакция не завершится?

P.S .: Что делать, если вызывающий метод аннотирован @Transactional?

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
0
0
381
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Из спецификации JPA 2.1 (выделено мной):

Pessimistic locking guarantees that once a transaction has obtained a pessimistic lock on an entity instance:

  • no other transaction (whether a transaction of an application using the Java Persistence API or any other transaction using the underlying resource) may successfully modify or delete that instance until the transaction holding the lock has ended.

Поскольку это механизм, используемый Spring Data JPA, блокировка сохраняется до конца транзакции.

В этом есть смысл. Я думаю, что меня смутил JavaDoc для @Lock, который только что говорил о «запросе».

Christian 14.09.2018 10:48

Другие вопросы по теме