BackEnd/Spring Boot

Propagation

Raconer 2023. 9. 7. 15:51
728x90

트랜잭션 전파 (Propagation)

트랜잭션 전파는 스프링에서 트랜잭션 메서드가 이미 실행 중인 트랜잭션을 어떻게 처리해야 하는지를 제어하는 속성입니다.
스프링은 @Transactional 어노테이션을 사용하여 트랜잭션 전파를 설정할 수 있습니다.

트랜잭션 전파 옵션

  1. Propagation.REQUIRED
    • 메서드가 이미 실행 중인 트랜잭션이 있는 경우 해당 트랜잭션을 재사용하고, 트랜잭션이 없는 경우에는 새로운 트랜잭션을 시작합니다.
  2. Propagation.REQUIRES_NEW
    • 메서드가 항상 새로운 트랜잭션을 시작하고, 이미 실행 중인 트랜잭션은 일시 중단됩니다.
  3. Propagation.SUPPORTS
    • 메서드가 이미 실행 중인 트랜잭션을 재사용하고, 트랜잭션이 없는 경우에도 트랜잭션 없이 실행됩니다.
  4. Propagation.NOT_SUPPORTED
    • 메서드가 이미 실행 중인 트랜잭션을 일시 중단하고, 트랜잭션 없이 실행됩니다.
  5. Propagation.MANDATORY
    • 메서드가 반드시 이미 실행 중인 트랜잭션이 있어야 하며, 그렇지 않으면 예외가 발생합니다.
  6. Propagation.NEVER
    • 메서드가 절대로 트랜잭션을 시작하지 않아야 하며, 이미 실행 중인 트랜잭션이 있으면 예외가 발생합니다.

트랜잭션 전파를 적절히 설정하면 다중 메서드 호출 시 트랜잭션 동작을 조율하고 원하는 트랜잭션 동작을 달성할 수 있습니다.
이것은 데이터베이스 트랜잭션을 효과적으로 관리하고 예외 처리를 수행하는 데 유용합니다.

728x90