Я прочитал эту статью о параллелизме JPA , но либо я слишком толстый, либо недостаточно точный.
Я хочу сделать элементарное обновление под управлением базы данных-Операция if-found-else-insert (UPSERT
).
Она смотрит на мой слабый медленный ум, который я могу - в рамках транзакции, конечно - выполнить именованный запросс режимом блокировки PESSIMISTIC_WRITE
, посмотрите, возвращает ли он какие-либо результаты, а затем либо persist()
, либо update()
.
Что мне неясно, так это различия между выполнением этой операции сPESSIMISTIC_WRITE
блокировка против PESSIMISTIC_READ
блокировки.Я прочитал предложения - я понимаю, что PESSIMISTIC_READ
предназначен для предотвращения неповторяющихся чтений, а PESSIMISTIC_WRITE
... ну, может быть, я не очень хорошо понимаю это :-) - но под нимэто просто SQL SELECT FOR UPDATE
, да?В обоих случаях?