Проверяет знание стратегий блокировок для управления конкурентным доступом к данным.
Оптимистичная блокировка: Использует версию записи (@Version). Проверяет конфликты только при коммите.
Пессимистичная блокировка: Блокирует запись на уровне БД (SELECT FOR UPDATE).
1. Оптимистичная блокировка:
Добавьте поле с аннотацией @Version:
@Entity
public class Account {
@Id
private Long id;
private BigDecimal balance;
@Version
private Long version; // При конфликте выбрасывает OptimisticLockException
}2. Пессимистичная блокировка:
Используйте LockModeType.PESSIMISTIC_WRITE:
@Repository
public interface AccountRepository extends JpaRepository<Account, Long> {
@Lock(LockModeType.PESSIMISTIC_WRITE)
Account findById(Long id);
}Вывод:
Оптимистичная блокировка подходит для редких конфликтов, пессимистичная — для высококонкурентных сценариев.