데이터와 MyBatis — 읽기 자료
"송금" 같은 작업 — 출금만 됐는데 입금이 실패하면? 돈이 사라진다.
메서드 내 모든 DB 작업을 하나의 단위로 묶음. 하나라도 실패하면 모두 롤백.
@Service
public class TransferService {
@Transactional
public void transfer(int from, int to, int amount) {
accountMapper.withdraw(from, amount); // 출금
accountMapper.deposit(to, amount); // 입금
// 둘 중 하나라도 예외 발생 → 자동 롤백
// 둘 다 성공 → 커밋
}
}
"송금" 같은 작업 — 출금만 됐는데 입금이 실패하면? 돈이 사라진다.
여러 DB 작업을 묶어야 할 때 어떤 어노테이션을 쓰는지 안다.