CS

[JPA] Propagation

KJihun 2023. 10. 27. 16:33
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