Правильно ли я понимаю пессимистическую блокировку JPA?
Да, именно так работает блокировка чтения / записи
... но все остальные могут открывать сущность в режиме READ-ONLY
Я не совсем уверен, что вы имеете в виду. Мы все еще говорим о нескольких транзакциях, выполняющихся одновременно, верно (у меня странное ощущение, что вы не это имеете в виду)? Если это так, то в вашей логике удержание блокировки «READ_ONLY» ничего не дает.
Блокировка означает «Я замораживаю этот ресурс, чтобы некоторые другие транзакции не могли продолжаться, пока я не закончу». Но в логике, которую вы описали, когда вы удерживаете блокировку READ_ONLY, транзакция, удерживающая блокировку READ_ONLY, и транзакция, удерживающая блокировку WRITE, могут продолжаться.