[트랜잭션(Transaction)]
1. 정의
- 데이터베이스에서 여러 연산(DML)을 하나의 논리적인 작업 단위로 묶음
- 예: 이체, 주문, 등록 등
- 여러
insert/update/delete/select 작업을 하나의 논리로 처리
2. 목적
- 신뢰성과 안정성 보장
- 데이터 무결성 보장: 여러 연산 중 하나라도 실패하면 전체 작업을 실패 처리
| ACID 속성 | 설명 |
|---|
| 원자성 (Atomicity) | 여러 연산이 모두 성공해야 결과가 반영됨 |
| 일관성 (Consistency) | 트랜잭션 이후 데이터는 항상 일관된 상태여야 함 |
| 독립성/격리성 (Isolation) | 다른 트랜잭션과 상호 영향을 받지 않음 |
| 지속성 (Durability) | 트랜잭션이 성공하면 결과는 영구적으로 저장됨 |
3. 핵심 용어
- Transaction: 트랜잭션 자체
- commit: 트랜잭션 정상 완료 및 최종 확정
- rollback: 트랜잭션 중 오류 발생 시 이전 상태로 되돌림
- savepoint: 특정 시점까지 작업 임시 저장, 부분 롤백 가능
4. 스프링(자바)에서 트랜잭션 적용 방법 (AOP 포함)
방법 1) 메서드 단위 적용
@Transactional
public void method() {
}
방법 2) 클래스 단위 적용
java
코드 복사
@Transactional
public class Service {
}
5. 롤백 작용 기준
기본적으로 RuntimeException 발생 시 롤백됨
체크 예외(Exception)에 대해서도 롤백하려면 별도 지정 필요
java
코드 복사
@Transactional(rollbackFor = Exception.class)
@Transactional(rollbackFor = 특정예외클래스명.class)