@Transactional은 Spring Framework에서 제공하는 애너테이션으로, 데이터베이스 트랜잭션 관리를 단순화하기 위해 사용됩니다. 이 애너테이션은 메서드나 클래스 수준에서 선언하여 트랜잭션의 시작과 종료를 자동으로 처리합니다.
2. @Transactional의 주요 기능
@Transactional은 다음과 같은 트랜잭션 관리 기능을 제공합니다:
트랜잭션 시작과 종료: 메서드 실행 전 트랜잭션을 시작하고, 실행 후 커밋 또는 롤백합니다.
예외 처리: RuntimeException 또는 Error가 발생하면 자동으로 트랜잭션을 롤백합니다.
격리 수준 설정: 데이터베이스의 트랜잭션 격리 수준을 설정할 수 있습니다.
전파 옵션: 메서드 간 트랜잭션 전파 방식을 정의할 수 있습니다.
3. @Transactional 주요 속성
@Transactional은 다양한 속성을 통해 트랜잭션 동작을 제어할 수 있습니다:
propagation: 트랜잭션 전파 방식을 정의합니다. (예: REQUIRED, REQUIRES_NEW)
isolation: 트랜잭션 격리 수준을 설정합니다. (예: READ_COMMITTED, SERIALIZABLE)
timeout: 트랜잭션이 완료될 때까지 기다리는 최대 시간을 초 단위로 설정합니다.
readOnly: 읽기 전용 트랜잭션 여부를 설정합니다.
rollbackFor: 롤백이 발생해야 할 예외를 지정합니다.
noRollbackFor: 롤백이 발생하지 않을 예외를 지정합니다.
4. @Transactional 사용 예제
아래는 @Transactional을 사용하는 간단한 예제입니다:
1) 기본 사용법
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
public class UserService {
@Transactional
public void createUser(User user) {
// 사용자 저장 로직
userRepository.save(user);
// 추가 로직
}
}