Достаточно ли LockModeType.PESSIMISTIC_WRITE для UPSERT в JPA?

Я прочитал эту статью о параллелизме JPA , но либо я слишком толстый, либо недостаточно явный.

Я ищу атомное обновление, управляемое базой данных - операция if-found-else-insert ( UPSERT ).

Моему бедному медленному мозгу кажется , что я могу - в рамках транзакции, конечно, - выполнить именованный запрос с режимом блокировки PESSIMISTIC_WRITE , посмотреть, вернет ли он что-нибудь результатов, а затем либо persist () , либо update () впоследствии.

Я не понимаю, в чем разница между выполнением этой операции с PESSIMISTIC_WRITE Блокировка по сравнению с блокировкой PESSIMISTIC_READ . Я прочитал предложения - я понимаю, что PESSIMISTIC_READ предназначен для предотвращения неповторяющихся чтений, а PESSIMISTIC_WRITE - это ... ну, может я этого не понимаю, поэтому ну :-) - но под ним просто SQL SELECT FOR UPDATE , Да? В обоих случаях?

8
задан Bill the Lizard 30 July 2012 в 13:35
поделиться