Skip to content

DanilPytliakov/backend-core

Repository files navigation

Руководство по выбору стратегии блокировок

Когда использовать Pessimistic Locking

✅ Подходит для:

  • Критические финансовые операции: списание денег, обновление баланса
  • Конверсия Lead→Deal: изменение статуса обеих entity, создание связей
  • Резервирование ограниченного ресурса: последний билет, товар со счётчиком
  • Операции с высокой конкуренцией: десятки пользователей одновременно изменяют данные
  • Гарантия отсутствия конфликтов: бизнес не допускает retry логику

❌ НЕ использовать для:

  • Обычных CRUD операций с низкой конкуренцией
  • Длительных операций (пользователь редактирует форму 5 минут)
  • Read-heavy сценариев где запись редка

Пример использования:

@Transactional
public Deal convertLeadToDeal(UUID leadId) {
    // Блокируем Lead эксклюзивно
    Lead lead = leadRepository.findByIdForUpdate(leadId).orElseThrow();

    lead.setStatus("CONVERTED");
        Deal deal =
        new Deal(lead);
                                
    leadRepository.save(lead);
    return dealRepository.save(deal);
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages