◇ PART · DB

@Transactional 기본

데이터와 MyBatis — 읽기 자료

📍 지금 어디를 만지고 있나요?
브라우저
데이터와 MyBatis
DB

핵심 용어

트랜잭션 (Transaction)여러 작업을 하나의 단위로 묶은 것.
롤백 (Rollback)실패 시 모든 변경을 취소.
커밋 (Commit)성공 시 변경을 영구히 반영.

1. 문제

전 차시까지의 답답함

"송금" 같은 작업 — 출금만 됐는데 입금이 실패하면? 돈이 사라진다.

2. 새 도구

@Transactional

메서드 내 모든 DB 작업을 하나의 단위로 묶음. 하나라도 실패하면 모두 롤백.

3. 코드

@Service
public class TransferService {

    @Transactional
    public void transfer(int from, int to, int amount) {
        accountMapper.withdraw(from, amount);   // 출금
        accountMapper.deposit(to, amount);      // 입금
        // 둘 중 하나라도 예외 발생 → 자동 롤백
        // 둘 다 성공 → 커밋
    }
}

4. 정리

5. Before / After

전 차시 끝

"송금" 같은 작업 — 출금만 됐는데 입금이 실패하면? 돈이 사라진다.

이번 차시 끝

여러 DB 작업을 묶어야 할 때 어떤 어노테이션을 쓰는지 안다.