개발일기/CS(면접)
Transaction 전파 전략
w.llama
2024. 8. 14. 21:01
Transaction 전파 전략:
트랜잭션 전파는 이미 진행 중인 트랜잭션이 있을 때 새로운 트랜잭션을 어떻게 처리할지를 정의합니다. 주요 전략은 다음과 같습니다:
REQUIRED (기본값):
진행 중인 트랜잭션이 있으면 참여, 없으면 새로 시작
가장 일반적으로 사용되는 전략
SUPPORTS:
진행 중인 트랜잭션이 있으면 참여, 없어도 비트랜잭션으로 실행
트랜잭션이 필수적이지 않은 읽기 작업에 적합
MANDATORY:
진행 중인 트랜잭션이 반드시 있어야 함. 없으면 예외 발생
독립적으로 실행되면 안 되는 비즈니스 로직에 사용
REQUIRES_NEW:
항상 새로운 트랜잭션을 시작. 기존 트랜잭션은 일시 중단
독립적인 트랜잭션이 필요한 경우 사용 (예: 로깅)
NOT_SUPPORTED:
트랜잭션 없이 실행. 진행 중인 트랜잭션이 있다면 일시 중단
트랜잭션이 필요 없는 작업에 사용
NEVER:
트랜잭션 없이 실행. 진행 중인 트랜잭션이 있으면 예외 발생
트랜잭션을 허용하지 않는 작업에 사용
NESTED:
진행 중인 트랜잭션이 있으면 중첩 트랜잭션을 생성, 없으면 REQUIRED처럼 동작
세부 작업의 롤백이 전체에 영향을 주지 않아야 할 때 사용
이러한 전파 전략들은 @Transactional 어노테이션의 propagation 속성으로 지정할 수 있습니다.