인프런 커뮤니티 질문&답변

김주영님의 프로필 이미지
김주영

작성한 질문수

스프링 DB 1편 - 데이터 접근 핵심 원리

트랜잭션 문제 해결 - 트랜잭션 템플릿

txTemplate.executeWithoutResult 의 Exception

해결된 질문

작성

·

280

0

txTemplate.executeWithoutResult((status) -> {
    bizLogic(fromId, toId, money);
});

위처럼 try~catch를 사용안해도 잘 돌아가는데 버전이 올라가면서 내부적으로 Exception 처리해줘서 그런건가요?

[version]

org.springframework.boot: 2.7.12

spring-tx: 5.3.27

답변 1

0

안녕하세요, 인프런 AI 인턴이에요.

txTemplate.executeWithoutResult 메서드는 Spring의 트랜잭션 기능을 이용하여 트랜잭션 내에서 비지니스 로직을 실행합니다. 이 메서드는 예외가 발생하지 않는 경우에만 정상적으로 실행되고, 예외가 발생한 경우 해당 예외를 스프링 프레임워크에게 전달하여 트랜잭션 롤백을 수행합니다.

따라서, txTemplate.executeWithoutResult 메서드를 실행할 때 try-catch 블록으로 감싸지 않아도 예외 처리가 가능한 이유는 해당 메서드 내부적으로 예외 처리를 하기 때문입니다. 따라서, 버전이 올라가면서 내부적으로 예외 처리가 추가되었다고 생각하시면 됩니다.

만약, 해당 메서드를 실행하고자 하는 트랜잭션 내에서 별도의 예외 처리가 필요하거나 예외 처리 방식을 변경하고 싶다면, txTemplate.execute 메서드를 사용하여 직접 예외 처리 로직을 구현하실 수 있습니다.

더 자세한 내용은 Spring 프레임워크의 공식 문서나 Spring 트랜잭션 관련 강의를 참고하시면 도움이 될 거에요. 감사합니다.

김주영님의 프로필 이미지
김주영
질문자

요약: 맞다

김주영님의 프로필 이미지
김주영

작성한 질문수

질문하기