2 недели назад
SELECT FOR UPDATE в Java и PostgreSQL: когда, зачем и как это работает
Стек: Java 11, PostgreSQL 12+, JDBC, Spring Boot, Hibernate Цель: понять, когда использовать SELECT FOR UPDATE, как он блокирует строки, какие есть альтернативы, и как фреймворки управляют блокировками “под капотом”. Представьте: два пользователя одновременно пытаются купить последний товар на складе. Без блокировок: Итог: товар продан дважды, хотя был один. 💡 Решение: заблокировать строку при чтении, чтобы другой поток не мог её прочитать до завершения транзакции. SELECT * FROM products WHERE id = 1 FOR UPDATE; ⚠️ Важно: блокировка удерживается до конца транзакции (COMMIT или ROLLBACK)...