트랜잭션

최규호·2025년 9월 29일

[트랜잭션(Transaction)]

1. 정의

  • 데이터베이스에서 여러 연산(DML)을 하나의 논리적인 작업 단위로 묶음
    • 예: 이체, 주문, 등록 등
    • 여러 insert/update/delete/select 작업을 하나의 논리로 처리

2. 목적

  • 신뢰성과 안정성 보장
  • 데이터 무결성 보장: 여러 연산 중 하나라도 실패하면 전체 작업을 실패 처리
ACID 속성설명
원자성 (Atomicity)여러 연산이 모두 성공해야 결과가 반영됨
일관성 (Consistency)트랜잭션 이후 데이터는 항상 일관된 상태여야 함
독립성/격리성 (Isolation)다른 트랜잭션과 상호 영향을 받지 않음
지속성 (Durability)트랜잭션이 성공하면 결과는 영구적으로 저장됨

3. 핵심 용어

  • Transaction: 트랜잭션 자체
  • commit: 트랜잭션 정상 완료 및 최종 확정
  • rollback: 트랜잭션 중 오류 발생 시 이전 상태로 되돌림
  • savepoint: 특정 시점까지 작업 임시 저장, 부분 롤백 가능

4. 스프링(자바)에서 트랜잭션 적용 방법 (AOP 포함)

  • 주로 비즈니스 로직(service)에서 사용

방법 1) 메서드 단위 적용

@Transactional
public void method() {
    // 트랜잭션 처리 로직
}
방법 2) 클래스 단위 적용
java
코드 복사
@Transactional
public class Service {
    // 모든 public 메서드에 트랜잭션 적용
}
5. 롤백 작용 기준
기본적으로 RuntimeException 발생 시 롤백됨

체크 예외(Exception)에 대해서도 롤백하려면 별도 지정 필요

java
코드 복사
// 모든 예외(Exception)에서 롤백
@Transactional(rollbackFor = Exception.class)

// 특정 예외 클래스에서 롤백
@Transactional(rollbackFor = 특정예외클래스명.class)
profile
코딩입문자 2025.05.26~ing

0개의 댓글