0

Spring @Transaction でアノテーションを付けるメソッドを決定する方法を理解するのに苦労しています。

BankService {

    transfer(Account from, Account to, int amount){
        deduct(from, amount);
        deposit(to, amount);
    }

    deduct(Account account, int amount){
        account = accountRepo.load(account); //make sure we dont have an old reference with old balance            
        int balance = account.getBalance();
        if (balance<amount){
            throw new IllegalStateException("Not enough money");
        } else {
            account.setBalance(balance-amount);
            accountRepo.save(account);
        }
    }

    deposit(Account account, int amount){
        account = accountRepo.load(account); //make sure we dont have an old reference with old balance
        account.setBalance(account.getBalance() + amount);
        accountRepo.save(account);
    }

}

送金内で、控除が失敗した場合、預金が失敗しなくても、明らかに預金は永続化されるべきではありません。

5 つのメソッド (transfer、deduct、deposit、load、save) のうち、@Transactional でアノテーションを付ける必要があるのはどれですか?その理由は?

4

2 に答える 2