Назад к вопросам
Северсталь-Ифоком
Junior — Middle
52
Объясните принцип работы Pessimistic Locking в рамках Spring и его применение при работе с базой данных
Компании, где спрашивали
R-Style Softlab
Ответ от нейросети
sobes.tech AI
Pessimistic Locking (пессимистичная блокировка) — это стратегия управления конкурентным доступом к данным, при которой запись в базе данных блокируется на время транзакции, чтобы предотвратить одновременное изменение другими транзакциями.
В Spring для реализации пессимистичной блокировки используется аннотация @Lock(LockModeType.PESSIMISTIC_WRITE) или PESSIMISTIC_READ в репозиториях JPA. При таком подходе при чтении или обновлении записи она блокируется на уровне базы, и другие транзакции ждут освобождения блокировки.
Применение:
- Используется, когда важно избежать конфликтов при одновременном обновлении данных.
- Помогает предотвратить потерю данных или состояние гонки.
Пример использования в Spring Data JPA:
public interface UserRepository extends JpaRepository<User, Long> {
@Lock(LockModeType.PESSIMISTIC_WRITE)
@Query("select u from User u where u.id = :id")
User findByIdForUpdate(@Param("id") Long id);
}
В этом примере при вызове findByIdForUpdate запись пользователя будет заблокирована для записи до окончания транзакции.