Deadlock при одновременных запросах на обновление и удаление сущности

Есть spring boot+Hibernate+postgreSQL приложение, в котором есть некая сущность SomeEntity. Есть сервис, который работает с этой сущностью, SomeEntityService. В этом сервисе 2 метода( оба @Transactional). Первый метод doSomeWorkAndUpdateSomeEntity() - делает некую работу и после этого выполняет обновление SomeEntity(метод выполняется примерно за 1.2 секунды). Второй метод - deleteSomeEntity() удаляет эту сущность и выполняется за 20 мс. Если возникнет такая последовательность вызовов для одной и той же сущности - сначала doSomeWorkAndUpdateSomeEntity(), потом сразу вызывается deleteSomeEntity() (разные клнтроллеры вызвали 2 этих метода), то в этом случае образуется дедлок, тк один метод вызывает обновление сущности, а другой уже эту сущность удалил. Как решить эту проблему с дедлоком, как можно дотюнить транзакции?


Ответы (0 шт):