Wednesday, June 14, 2023

Springboot에서 TRANSACTION PROPAGATION 사용법

Spring 프레임워크 트랜잭션 관리: 개요

Spring 프레임워크는 데이터베이스 작업의 무결성을 보장하는 트랜잭션 관리 기능을 제공하며, 이를 통해 비즈니스 로직 구현에 집중할 수 있습니다. 이 과정에서 중요한 부분은 트랜잭션 전파 설정으로, 새로운 데이터베이스 작업이 기존 트랜잭션과 어떻게 연결되는지를 결정합니다.

Spring의 트랜잭션 전파 설정 살펴보기

Spring은 일곱 가지 다른 트랜잭션 전파 설정을 지원합니다. 각 설정은 고유한 기능을 가지고 있으며 트랜잭션의 특정 요구 사항에 따라 사용됩니다:

  • PROPAGATION_REQUIRED: 기본 설정이며 가장 일반적으로 사용됩니다. 기존 트랜잭션이 있으면 트랜잭션에 참여하고, 그렇지 않으면 새 트랜잭션을 시작합니다.
  • PROPAGATION_SUPPORTS: 기존 트랜잭션이 있으면 트랜잭션에 참여하고, 그렇지 않으면 트랜잭션 없이 실행됩니다. 작업의 원자성이 유지될 필요가 없을 때 사용됩니다.
  • PROPAGATION_MANDATORY: 기존 트랜잭션이 있어야 한다는 것을 의미합니다. 트랜잭션이 없으면 예외를 던집니다.
  • PROPAGATION_REQUIRES_NEW: 항상 새 트랜잭션을 시작하고 기존 트랜잭션을 중단합니다. 새 트랜잭션은 완전히 독립적으로 실행됩니다.
  • PROPAGATION_NOT_SUPPORTED: 트랜잭션이 필요하지 않은 작업을 실행하는 데 사용되며, 기존 트랜잭션을 중단한 상태에서 실행됩니다.
  • PROPAGATION_NEVER: 트랜잭션이 없는 경우에만 실행되며, 트랜잭션이 있으면 예외를 던집니다. 트랜잭션 작업이 절대 실행되어서는 안 될 때 사용됩니다.
  • PROPAGATION_NESTED: 기존 트랜잭션에 중첩되어 실행되며, 롤백은 별도로 처리되어 상위 트랜잭션에 영향을 주지 않습니다. JDBC 3.0 이상에서만 사용 가능합니다.

@Transactional 어노테이션을 이용한 전파 설정 사용하기

Spring의 @Transactional 어노테이션을 이용하면 트랜잭션 전파 설정을 지정할 수 있습니다. 서비스 내에서의 사용 예는 다음과 같습니다:

@Service
public class MyService {
 @Transactional(propagation = Propagation.REQUIRED)
 public void exampleMethod() {
   // Code
 }
}

결론

효과적인 트랜잭션 관리는 종종 여러 전파 설정을 적용하는 것을 의미하며, 이는 애플리케이션의 요구 사항에 따라 달라집니다. 트랜잭션 전파를 활용하면 애플리케이션의 성능과 안정성을 크게 향상시킬 수 있습니다. 이 가이드가 Spring에서 트랜잭션 전파를 더 잘 이해하고 적용하는 데 도움이 되길 바랍니다.


0 개의 댓글:

Post a Comment