[내배캠 Spring TIL] Spring @Transactional 썸네일

[내배캠 Spring TIL] Spring @Transactional

Spring
Java
2024년 8월 19일

트랜젝션에 대해 공부한 내용을 정리해보도록 하겠다.

트랜젝션 #

여러 작업이 하나의 단위로 실행되는 것을 의미한다. 이 작업들이 모두 성공해야만 최종적으로 데이터베이스에 반영된다. 만약 하나라도 실패하면, 모든 작업은 취소(rollback)된다.

사용 #

@Transactional 어노테이션을 메서드나 클래스 레벨에 선언하면, 해당 범위 내에서 트랜잭션이 적용된다.

@Transactional
public Todo createTodo(String content, String password, Long userId) {
  // 서비스 로직
}

예외 처리와 롤백(rollback) #

기본적으로 @TransactionalRuntimeException 및 그 하위 클래스에서만 롤백이 발생한다. 특정 예외에서 롤백을 원할 경우 rollbackFor 속성을 사용하여 지정할 수 있다.

전파(Propagation) #

전파 옵션은 트랜잭션이 이미 존재하는지 여부에 따라 현재 메서드가 새 트랜잭션을 시작할지, 기존 트랜잭션에 참여할지 등을 결정한다.


주요 전파 옵션:

  • REQUIRED: 기본값으로, 현재 트랜잭션이 없으면 새로운 트랜잭션을 시작하고, 있으면 기존 트랜잭션에 참여한다.
  • REQUIRES_NEW: 항상 새로운 트랜잭션을 시작하며, 기존 트랜잭션이 있으면 일시 중단된다.
  • NESTED: 현재 트랜잭션이 있으면 중첩 트랜잭션으로 실행되며, 없으면 새로운 트랜잭션을 시작한다.

최근 게시물

김진근 • © 2025