@Transactional

LJM·2023년 3월 25일
0

Spring

목록 보기
7/14

Spring에서 @Transactional 주석은 트랜잭션의 경계를 정의하는 데 사용됩니다. 특정 메서드가 트랜잭션 컨텍스트 내에서 실행되어야 함을 나타내며 해당 메서드에 의해 조작되는 데이터가 일관되고 트랜잭션의 ACID(Atomicity, Consistency, Isolation, Durability) 속성을 따릅니다.

메서드에 @Transactional 주석이 추가되면 Spring 프레임워크는 다음을 수행합니다.

이미 활성화된 트랜잭션이 없는 경우 메서드 실행 전에 새 트랜잭션을 시작합니다.
메서드 실행이 성공적으로 완료된 후 트랜잭션을 커밋합니다.
메서드 실행 중에 예외가 발생하면 데이터 일관성을 유지하기 위해 트랜잭션이 롤백됩니다.
클래스 수준에서 @Transactional 주석을 적용할 수 있습니다. 즉, 클래스 내의 모든 메서드가 트랜잭션에 참여하거나 메서드 수준에서 특정 메서드만 트랜잭션이 됩니다.

다음은 @Transactional 주석을 사용하는 예입니다.

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

    @Transactional
    public User createUser(String name, String email) {
        User newUser = new User(name, email);
        userRepository.save(newUser);
        return newUser;
    }
}

이 예제에서 createUser 메서드는 @Transactional로 주석 처리됩니다. 이렇게 하면 새 사용자 개체를 저장하는 동안 예외가 발생하면 트랜잭션이 롤백되고 일관성 없는 데이터가 데이터베이스에 유지되지 않습니다.

profile
게임개발자 백엔드개발자

0개의 댓글