Встречается на собеседованиях • сегодня
Приведи пример оптимистической блокировки в Java
Оптимистическая блокировка предполагает, что конфликты редки, и проверяет версию данных перед обновлением. Пример с @Version в JPA (Hibernate):
java
@Entity
public class Account {
@Id
private Long id;
private BigDecimal balance;
@Version
private int version; // Версия для контроля изменений
// Геттеры/сеттеры
}При обновлении:
java
// В сервисе
@Transactional
public void transfer(Long accountId, BigDecimal amount) {
Account account = entityManager.find(Account.class, accountId);
account.setBalance(account.getBalance().add(amount));
// При коммите Hibernate проверит, что version не изменилась
// Если изменилась - выбросит OptimisticLockException
}Суть: перед записью проверяется, что версия сущности в БД совпадает с версией на момент чтения. Если нет - значит данные были изменены другим процессом, и транзакция откатывается.

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