Встречается на собеседованиях • сегодня
Как исключить наложение изменений документа пользователями в базе данных
Для исключения наложения изменений (race condition) в БД можно использовать:
- Оптимистичная блокировка - версионный контроль. Перед обновлением проверяем, что версия документа не изменилась:
java
@Entity
public class Document {
@Version
private int version;
// другие поля
}При конфликте будет выброшено OptimisticLockException.
- Пессимистичная блокировка - явная блокировка записи на время транзакции:
java
Document doc = em.find(Document.class, id, LockModeType.PESSIMISTIC_WRITE);Блокирует запись до конца транзакции.
- CAS (Compare-And-Swap) операции:
sql
UPDATE documents
SET content = 'new', version = version + 1
WHERE id = 1 AND version = 2Проверя affected rows, можно определить успешность операции.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы