[CS 개념]@Transactional 이란?

정동아·2024년 11월 27일
0

CS 개념

목록 보기
5/5

@Transactional 은 어떤 기능을 하나요?

@Transactional은 Spring Framework에서 제공하는 애노테이션으로, 트랜잭션(Transaction)을 관리하는 데 사용됩니다.
트랜잭션은 데이터베이스 작업이 모두 성공하거나, 실패 시 모든 작업이 롤백(취소)되도록 보장하는 일련의 작업 단위입니다.
이 애노테이션을 사용하면 데이터베이스 작업의 원자성을 보장하며, 지정된 메서드나 클래스에서 발생하는 작업이 성공적으로 완료되거나, 에러 발생 시 전체 작업을 롤백하여 일관성을 유지할 수 있습니다.

트랜잭션 시작 -> 비즈니스 로직 실행(여러 쿼리들이 실행) (DB내 갱신이 아직 적용되지 않는다) -> 트랜잭션 커밋 (트랜잭션이 성공적이며, 갱신이 실제 적용됨)
과정으로 트랜잭션이 진행됩니다.

만약 쿼리 하나가 실패하면, 데이터베이스 시스템은 전체 트랜잭션 또는 실패한 쿼리를 롤백합니다.

주요 기능
1. 트랜잭션 시작과 종료 관리

@Transactional이 선언된 메서드가 호출되면 Spring은 해당 메서드 실행 전에 트랜잭션을 시작하고, 실행이 완료되면 트랜잭션을 커밋하거나 롤백합니다.

  1. 롤백

    예외가 발생하면 트랜잭션이 자동으로 롤백됩니다. 기본적으로 체크되지 않은 예외(RuntimeException 및 그 하위 클래스)가 발생할 때만 롤백되며, 체크된 예외는 롤백되지 않습니다.
  1. 전파(Propagation)

    트랜잭션이 이미 실행 중인지 여부에 따라 트랜잭션의 동작 방식을 결정합니다.
    기본 전파 수준은 REQUIRED로, 트랜잭션이 없으면 새로 생성하고, 이미 실행 중인 트랜잭션이 있으면 해당 트랜잭션에 참여합니다.
  1. 격리수준(Isolation Level)

    트랜잭션이 다른 트랜잭션과 상호 작용하는 방식을 제어합니다. 이를 통해 데이터 무결성을 보장할 수 있습니다.

0개의 댓글