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