Как альтернатива для SELECT FOR UPDATE - использовать advisory locks (pg_advisory_xact_lock). Из плюсов: для Spring Data не нужно дублировать методы findBy с @Lock, автоматически снимается в конце транзакции, не пишет в WAL (но возможно это несущественно). Естественно, это не защищает от прямого UPDATE, поэтому нужно использовать в каждом методе сервиса, который модифицирует объект.
Как альтернатива для SELECT FOR UPDATE - использовать advisory locks (pg_advisory_xact_lock).
Из плюсов: для Spring Data не нужно дублировать методы findBy с @Lock, автоматически снимается в конце транзакции, не пишет в WAL (но возможно это несущественно).
Естественно, это не защищает от прямого UPDATE, поэтому нужно использовать в каждом методе сервиса, который модифицирует объект.