아카이브사이트맵
© 2026 Rayon. All rights reserved.
DevDay
아티클랭킹스페이스채용
하이퍼커넥트 favicon하이퍼커넥트

Spring Transactional 롤백, 헷갈린다면? 핵심 원리와 예외 처리 완벽 정리!

by DD
2025-02-10
1년 전
조회수 14

Spring Transactional에서 Unchecked Exception 발생 시, 기본적으로 롤백이 수행됨

Kotlin 환경에서 Checked Exception이 UndeclaredThrowableException으로 변환되어 롤백될 수 있음

REQUIRES_NEW 전파 옵션 사용 시, 부모 트랜잭션과 자식 트랜잭션의 독립적인 롤백 보장

Unchecked Exception과 롤백 마킹

Spring은 Unchecked Exception 발생 시, rollbackFor 설정을 통해 롤백 여부를 결정한다. 구체적으로, TransactionInterceptor가 예외 발생 시 롤백 마킹을 수행한다. 따라서, try-catch 블록으로 Unchecked Exception을 잡아도 롤백될 수 있다. 반면, Checked Exception은 기본적으로 롤백 대상이 아니다.

Kotlin Checked Exception의 함정

Kotlin에서는 Checked Exception에 대한 throws 선언이 필수가 아니므로, Java와 다른 동작을 보인다. 따라서, IOException과 같은 Checked Exception이 발생해도, UndeclaredThrowableException으로 래핑되어 롤백될 수 있다. 결과적으로, Kotlin 환경에서는 예외 처리에 더욱 주의해야 한다.

REQUIRES_NEW와 트랜잭션 격리

REQUIRES_NEW 전파 옵션을 사용하면, 새로운 트랜잭션이 생성되어 부모 트랜잭션과 독립적으로 동작한다. 구체적으로, 자식 트랜잭션에서 RuntimeException이 발생해도 부모 트랜잭션은 롤백되지 않는다. 따라서, 데이터 무결성을 유지하면서 장시간 트랜잭션 문제를 해결할 수 있다.

Spring Transactional Rollback Deep Dive
고급
아키텍처
Spring
Kotlin
Transactional
AOP
Java
Backend
원문 읽기
원문 읽기

관련 추천 글

IntelliJ IDEA 2026.1 출시! C/C++ 지원 강화 및 AI 에이전트 통합!

레딧 로고

권한에 따라 파일 보호 방식을 자동 적용하는 방법

올리브영 로고

신입 개발자를 위한 성장 꿀팁!

네이버 페이 로고

SK ICT 개발자들의 기술 공유 플랫폼, 최신 블로그 소식!

SK플래닛 로고

카카오스타일 개발팀, 함께 성장할 개발자를 찾습니다!

카카오스타일 로고

Spring Tools 5.2.0 출시! Claude Code 플러그인 등 신기능 확인

스프링 로고
하이퍼커넥트 favicon하이퍼커넥트
고급
아키텍처
Spring
Kotlin
Transactional
AOP
Java
Backend

관련 추천 글

IntelliJ IDEA 2026.1 출시! C/C++ 지원 강화 및 AI 에이전트 통합!

레딧 로고

권한에 따라 파일 보호 방식을 자동 적용하는 방법

올리브영 로고

신입 개발자를 위한 성장 꿀팁!

네이버 페이 로고

댓글 0

첫 번째 댓글을 남겨보세요!