Встречается на собеседованиях • сегодня
Что такое оптимистичная блокировка
Оптимистичная блокировка (optimistic locking) — это стратегия управления параллельным доступом, предполагающая, что конфликты редки. Вместо блокировки данных на время транзакции, система проверяет, изменились ли данные с момента их чтения, перед записью.
Как работает:
- Каждая запись имеет версию (например, поле
versionили timestamp). - При чтении данных клиент получает текущую версию.
- Перед обновлением проверяется, что версия не изменилась.
- Если версия совпадает — обновление выполняется, версия инкрементируется. Если нет — выбрасывается исключение (например,
OptimisticLockException).
Пример:
java
@Entity
public class Account {
@Id
private Long id;
private BigDecimal balance;
@Version
private int version; // поле для оптимистичной блокировки
}
// В коде:
Account account = entityManager.find(Account.class, 1L);
account.setBalance(newBalance); // при сохранении JPA проверит versionПлюсы:
- Нет блокировок, высокая производительность.
- Подходит для read-heavy систем.
Минусы:
- При конфликтах требуется повторная попытка или отмена операции.
- Не подходит для частых конфликтов.
Используется в JPA (аннотация @Version), Hibernate, Spring Data.

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