Jak prawidłowo przeprowadzić współbieżność modyfikacji rekordu - lockMode=PESSIMISTIC_READ (JPA)

0

Mam pytanie chcę dokonać licytacji aukcji czyli próbować zalokować rekord aukcji dla użytkownika do wpisania nowej kwoty aukcji.
W encji Aukcja dodałem zapytanie, którym będę próbował to zrealizować, czyli będzie wykonane zapytanie i jako wynik będzie zwracany rekord typu encji Aukcja lub brak rekordu.
Mam tu pytanie jaki kod trzeba jeszcze dodać by prawidłowo obsłużyć współbieżność takiej operacji, ustalenia nowej kwoty aukcji, przez blokadę rekordu dla użytkowwnika do modyfikacji.
Czy dodać obsługę wyjątków, ewentualnych jakich ? Ktoś pewnie będzie czekał aż zwolni się blokada ile czasu jak to ustawić ?

  @NamedQuery(name="Aukcja.findByIdAukcji_lockQuery", query="SELECT a FROM Aukcja a WHERE a.idAukcji = :idAukcji", lockMode=PESSIMISTIC_READ),

 
0

PESIMISTC_WRITE

0

Dziękuję, a jakaś dodatkowa obsługa tej sytuacji jest potrzebna ? Nic się nie będzie dziać złego u innych użytkowników w czasie gdy ktoś będzie modyfikował rekord , a oni będą próbować uzyskać dostęp do niego ?

0

Blokada pesymistyczna na czas transakcji. Wszyscy inni mogą czytać ale na zapis muszą poczekać aż skończy się TX z blokadą. Efektem jest pogorszenie "przepustowości" systemu właśnie przez blokady. Będzie dobrze ....

0

dzięki

1 użytkowników online, w tym zalogowanych: 0, gości: 1