В Spring jpa много документации об оптимистических и пессимистичных типах блокировок. Например, здесь мы можем увидеть следующее объяснение о оптимистической и пессимистической блокировке
Оптимистическая блокировка полностью контролируется JPA и требует только дополнительного столбца версии в таблицах БД. Он полностью независим от базового механизма БД, используемого для хранения реляционных данных.
С другой стороны, пессимистическая блокировка использует механизм блокировки, предоставляемый базовой базой данных, для блокировки существующих записей в таблицах. JPA необходимо знать, как вызвать эти блокировки, и некоторые базы данных не поддерживают их или только частично.
Если блокировка не указана, по умолчанию используется LockModeType.NONE
, что произойдет, если мы запустим несколько транзакций параллельно? Когда нам нужно использовать блокировку и где мы можем ее избежать?