Spring @Transaction으로 어떤 주석을 달 것인지 결정하는 방법을 이해하는 데 어려움을 겪고 있습니다. 전송 내 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 가지 방법 (전송, 차감, 입금,로드, 저장) 중에서 @Transactional로 주석을 달아야하는 이유와 그 이유는 무엇입니까?
가능한 가장 유용한 예외를 던집니다. 이 경우 계정이 과도하게 사용 된 경우 IllegalStateException은 일반 'RuntimeException'보다 설명 적입니다. – chrylis
나는 이것이 http://javaidm.blogspot.in/2016/02/how-transaction-is-managed-in-spring.html에 도움이된다고 생각한다. –