728x90
JPA의 Propagation
트랜잭션의 전파 방식을 설정하는 속성이다.
쉽게 말해 트랜잭션 내에서 다른 트랜잭션을 호출할 때 어떻게 동작할지를 지정한다.
@Transactional 어노테이션을 통해 설정할 수 있으며, ex: @Transactional(propagation = Propagation.REQUIRED)
다양한 `Propagation` 옵션들이 있다
1. REQUIRED: 기본값, 트랜잭션을 항상 필요로 한다.
기존 트랜잭션이 존재하면 해당 트랜잭션을 사용하고, 없으면 새로운 트랜잭션을 만들어 사용한다.
2. SUPPORTS: 기존 트랜잭션이 존재하면 해당 트랜잭션을 사용하고, 없으면 트랜잭션 없이 실행된다.
3. MANDATORY: 기존 트랜잭션이 반드시 존재해야 하며, 없으면 예외가 발생한다.
4. REQUIRES_NEW: 항상 새로운 트랜잭션을 시작한다. 기존 트랜잭션이 존재한다면 일시적으로 보류시킨다
5. NOT_SUPPORTED: 트랜잭션을 사용하지 않는다. 현재 실행 중인 트랜잭션을 일시적으로 보류시킨다.
6. NEVER: 트랜잭션이 존재하면 예외를 발생시킨다.
7. NESTED: 중첩된 트랜잭션을 지원하는 환경에서 사용된다. 새로운 트랜잭션을 시작하지만, 부모 트랜잭션이 롤백되면 자식 트랜잭션도 롤백된다.
'CS' 카테고리의 다른 글
[JPA] N+1 (0) | 2023.10.30 |
---|---|
[JPA] ORM, JPA (1) | 2023.10.30 |
[DB] 트랜잭션(Transaction, ACID) (0) | 2023.10.27 |
[JPA] 영속성 컨텍스트 및 이점(5가지) (0) | 2023.10.27 |
[Design Pattern] 가교 패턴(브릿지 패턴, Bridge Pattern) (0) | 2023.10.26 |