@Transactional 어노테이션

SoHEeeeeee·2023년 7월 11일
0

@Transactional 어노테이션은 스프링 프레임워크에서 제공하는 어노테이션으로, 메서드나 클래스에 적용하여 트랜잭션 관리를 수행하는 데 사용됩니다.

트랜잭션은 여러 개의 데이터베이스 작업을 하나의 논리적인 작업 단위로 묶어서 처리하는 기능을 말합니다. 트랜잭션은 데이터의 일관성과 무결성을 보장하며, 작업이 모두 성공적으로 완료되거나 모두 롤백되는 것을 보장합니다. 이를 통해 데이터베이스 작업에 대한 안정성과 일관성을 유지할 수 있습니다.

@Transactional 어노테이션을 사용하면 메서드 또는 클래스에 트랜잭션 관리 기능을 적용할 수 있습니다. 스프링은 @Transactional 어노테이션이 적용된 메서드 또는 클래스 내에서 수행되는 데이터베이스 작업을 하나의 트랜잭션으로 묶어서 관리합니다.

메서드가 호출되면 트랜잭션은 시작되고, 메서드가 정상적으로 종료되면 트랜잭션은 커밋되어 변경 사항이 영구적으로 적용됩니다. 그러나 예외가 발생하면 트랜잭션은 롤백되어 변경 사항이 취소됩니다.

다음은 @Transactional 어노테이션을 사용한 예시입니다:

@Service
public class UserService {
    
    @Autowired
    private UserRepository userRepository;

    @Transactional
    public void updateUser(User user) {
        // 사용자 정보 업데이트 작업 수행
        userRepository.update(user);
    }
    
    // ...
}

위의 예시에서 updateUser 메서드에 @Transactional 어노테이션이 적용되어 있습니다.
이는 해당 메서드 내에서 수행되는 데이터베이스 작업이 하나의 트랜잭션으로 관리되어야 함을 나타냅니다.

메서드가 호출되면 트랜잭션이 시작되고, 메서드의 실행이 성공적으로 완료되면 트랜잭션이 커밋되어 변경 사항이 영구적으로 적용됩니다. 그러나 예외가 발생하면 트랜잭션은 롤백되어 변경 사항이 취소됩니다.

@Transactional 어노테이션은 스프링의 트랜잭션 관리 기능을 사용하기 위해 필요한 설정이 제대로 되어 있어야 동작합니다. 스프링은 기본적으로 트랜잭션 관리를 위해 PlatformTransactionManager를 사용하며, 이를 설정해야 합니다. 또한, @Transactional 어노테이션은 트랜잭션 속성(격리 수준, 전파 동작 등)을 지정하는 다양한 옵션을 제공하므로, 필요에 따라 사용자 정의 설정을 할 수도 있습니다.

profile
주니어 개발자

0개의 댓글