Sobes.tech
Назад к вопросам
Middle+
4

Нужно ли оборачивать метод transferMoney в @Transactional и почему?

Компании, где спрашивали
Ozon ФинтехOzon Финтех

Ответ от нейросети

sobes.tech AI

Да, метод transferMoney следует оборачивать в аннотацию @Transactional. Это необходимо для обеспечения атомарности операции перевода денег — чтобы обе части транзакции (списание с одного счета и зачисление на другой) выполнялись как единое целое. Если в процессе перевода произойдет ошибка, транзакция откатится, и данные останутся в консистентном состоянии, что предотвращает потерю или дублирование средств.

Пример:

@Transactional
public void transferMoney(Account from, Account to, BigDecimal amount) {
    from.debit(amount);
    to.credit(amount);
    accountRepository.save(from);
    accountRepository.save(to);
}