@Transactional은 Spring Framework에서 제공하는 애노테이션으로, 트랜잭션(Transaction)을 관리하는 데 사용됩니다.
트랜잭션은 데이터베이스 작업이 모두 성공하거나, 실패 시 모든 작업이 롤백(취소)되도록 보장하는 일련의 작업 단위입니다.
이 애노테이션을 사용하면 데이터베이스 작업의 원자성을 보장하며, 지정된 메서드나 클래스에서 발생하는 작업이 성공적으로 완료되거나, 에러 발생 시 전체 작업을 롤백하여 일관성을 유지할 수 있습니다.
트랜잭션 시작 -> 비즈니스 로직 실행(여러 쿼리들이 실행) (DB내 갱신이 아직 적용되지 않는다) -> 트랜잭션 커밋 (트랜잭션이 성공적이며, 갱신이 실제 적용됨)
과정으로 트랜잭션이 진행됩니다.
만약 쿼리 하나가 실패하면, 데이터베이스 시스템은 전체 트랜잭션 또는 실패한 쿼리를 롤백합니다.
주요 기능
1. 트랜잭션 시작과 종료 관리
@Transactional이 선언된 메서드가 호출되면 Spring은 해당 메서드 실행 전에 트랜잭션을 시작하고, 실행이 완료되면 트랜잭션을 커밋하거나 롤백합니다.