≣ 목차
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package org.springframework.transaction.annotation;
public enum Propagation {
REQUIRED(0),
SUPPORTS(1),
MANDATORY(2),
REQUIRES_NEW(3),
NOT_SUPPORTED(4),
NEVER(5),
NESTED(6);
private final int value;
private Propagation(int value) {
this.value = value;
}
public int value() {
return this.value;
}
}
REQUIRED (기본값)
• 설명: 현재 트랜잭션이 있으면 해당 트랜잭션을 사용하고, 현재 트랜잭션이 없으면 새로운 트랜잭션을 생성합니다.
• 예시: @Transactional(propagation = Propagation.REQUIRED)
• 용도: 대부분의 경우 기본 전파 방식으로 사용됩니다. 메서드가 트랜잭션이 없으면 새로 시작하고, 있으면 그 트랜잭션을 사용합니다.
SUPPORTS
• 설명: 현재 트랜잭션이 있으면 그 트랜잭션을 사용하고, 현재 트랜잭션이 없으면 트랜잭션 없이 실행합니다.
• 예시: @Transactional(propagation = Propagation.SUPPORTS)
• 용도: 메서드가 현재 트랜잭션에 참여할 수도 있고 참여하지 않을 수도 있을 때 사용합니다. 트랜잭션이 있으면 사용하고, 없으면 비트랜잭션으로 동작합니다.
MANDATORY
• 설명: 현재 트랜잭션이 없으면 예외를 발생시킵니다. 이미 트랜잭션이 있을 경우 그 트랜잭션을 사용합니다.
• 예시: @Transactional(propagation = Propagation.MANDATORY)
• 용도: 메서드가 반드시 기존 트랜잭션 내에서 실행되어야 할 때 사용합니다. 트랜잭션이 없으면 예외가 발생합니다.
REQUIRES_NEW
• 설명: 항상 새로운 트랜잭션을 시작하고, 기존 트랜잭션이 있을 경우에는 그 트랜잭션을 일시 중지합니다.
• 예시: @Transactional(propagation = Propagation.REQUIRES_NEW)
• 용도: 메서드가 실행될 때마다 새로운 트랜잭션을 생성해야 할 때 사용합니다. 기존 트랜잭션이 롤백되더라도 새로운 트랜잭션은 독립적으로 커밋됩니다.
NOT_SUPPORTED
• 설명: 항상 트랜잭션 없이 실행합니다. 현재 트랜잭션이 있으면 일시 중지합니다.
• 예시: @Transactional(propagation = Propagation.NOT_SUPPORTED)
• 용도: 트랜잭션을 시작하지 않고 메서드를 실행할 때 사용합니다. 트랜잭션을 일시 중지하고 메서드가 완료되면 트랜잭션이 재개됩니다.
NEVER
• 설명: 항상 트랜잭션 없이 실행합니다. 현재 트랜잭션이 있으면 예외를 발생시킵니다.
• 예시: @Transactional(propagation = Propagation.NEVER)
• 용도: 메서드가 트랜잭션 없이 실행되어야 하며, 현재 트랜잭션이 있으면 예외를 발생시키고 싶을 때 사용합니다.
NESTED
• 설명: 현재 트랜잭션이 있으면 중첩 트랜잭션을 시작합니다. 이 중첩 트랜잭션은 부모 트랜잭션이 커밋될 때 커밋되거나 롤백될 수 있습니다.
• 예시: @Transactional(propagation = Propagation.NESTED)
• 용도: 부모 트랜잭션이 롤백될 경우 중첩 트랜잭션만 롤백되도록 하고 싶을 때 사용합니다. 예를 들어, 메서드 내에서 서브 트랜잭션을 필요로 할 때 유용합니다.
'Back-End > Spring Boot' 카테고리의 다른 글
Spring Event Publisher/Listener (0) | 2024.08.09 |
---|---|
@Transactional (0) | 2024.07.15 |
Spring Controller header 값 가져오기 (0) | 2024.07.10 |
데이터베이스 decimal 타입 JPA 에서 표현하기 (0) | 2024.07.09 |
@UniqueConstraint 와 @Colume 의 unique 속성 차이 (0) | 2024.07.09 |
댓글