1. 트랜잭션 전파란?
스프링에서 트랜잭션 전파(Transaction Propagation) 는 트랜잭션의 경계에서 이미 진행 중인 트랜잭션이 있을 때 또는 없을 때 어떻게 동작할 것인가를 결정하는 기능.
@Transactional 어노테이션이 존재하는 메서드를 호출했을 때, 기존에 트랜잭션이 존재하면 재사용할지, 예외를 던질지 등 행동을 결정할 수 있다.
트랜잭션 전파 속성에는 REQUIRED, REQUIRED_NEW, MANDATORY, SUPPORTS, NOT_SUPPORTED, NESTED, NEVER가 존재하며, @Transactional 어노테이션의 propagation 속성에 값을 설정할 수 있다.
2. 설명
REQUIRED: 트랜잭션이 존재하는 경우 해당 트랜잭션 사용하고, 트랜잭션이 없는 경우 트랜잭션을 생성합니다.
REQUIRED_NEW: 트랜잭션이 존재하는 경우 트랜잭션을 잠시 보류시키고, 신규 트랜잭션을 생성하여 사용합니다.
MANDATORY: 트랜잭션이 반드시 있어야 합니다. 트랜잭션이 없다면, 예외가 발생합니다. 만약, 트랜잭션이 존재한다면 해당 트랜잭션을 사용합니다.
SUPPORTS: 트랜잭션이 존재하는 경우 트랜잭션을 사용하고, 트랜잭션이 없다면 트랜잭션 없이 실행합니다.
NOT_SUPPORTED: 트랜잭션이 존재하는 경우 트랜잭션을 잠시 보류하고, 트랜잭션이 없는 상태로 처리합니다.
NESTED: 트랜잭션이 있다면 SAVEPOINT를 남기고 중첩 트랜잭션을 시작합니다. 만약 없는 경우에는 새로운 트랜잭션을 시작합니다.
NEVER: 트랜잭션이 존재하는 경우 예외를 발생시키고, 트랜잭션이 없다면 생성하지 않습니다.
- 참고
https://www.youtube.com/watch?feature=shared&v=cc4M-GS9DoY
'개발 > Java & Kotlin' 카테고리의 다른 글
[JPA] JPA에서 양방향 @OneToOne 관계와 Lazy Loading의 한계 (66) | 2025.04.06 |
---|---|
[Spring] 의존성 주입 간단히 알아보자 (92) | 2025.03.31 |
[Spring] CQRS 패턴이란? (98) | 2025.03.23 |
[Spring] 스프링 트랜잭션 AOP 동작 흐름 (43) | 2025.03.21 |
[Kotlin] 코틀린 + 스프링부트로 단숨에 완성하는 초강력 JWT 인증 시스템!💡 보안과 성능을 모두 잡아라!🔥(2) (40) | 2025.01.20 |