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 でアノテーションを付ける必要があるのはどれですか?その理由は?