Junior — Middle
Explique o princípio de funcionamento do Pessimistic Locking no contexto do Spring e sua aplicação ao trabalhar com bancos de dados
sobes.tech IA
Resposta da IA
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 запись пользователя будет заблокирована для записи до окончания транзакции.