작성
·
192
0
이전에 체크 예외, 언체크 예외 강의때 예외가 종속이 되서 언체크 예외로 보통 한다고 하셨는데요. 그럼 리포지토리를 체크 예외로 구현해놨으면 서비스에서 @Transaction 애노테이션을 추가해도 롤백 처리가 안된다는 건가요??
회사에서 back-to-back으로 서비스 단에서 다른서버로 API를 호출할 때 롤백을 해야 하는 경우, 롤백처리를 어떻게 해야 하나요??이런 경우에는 서버에서 내려주는 응답을 보고 언체크 예외를 발생시켜서 트랜잭션이 롤백할 수 있게 해줘야 하는건가요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
Wind Thomas님의 질문은 스프링에서의 예외 처리와 트랜잭션 관리에 관한 이해를 요구하는 문제로 보이며, 스프링 트랜잭션의 기본 규칙과 예외 처리 방식을 중심으로 답변을 구성하겠습니다.
체크 예외와 트랜잭션 롤백 처리: 스프링의 선언적 트랜잭션 관리에서는 언체크 예외(런타임 예외)가 발생할 때 기본적으로 롤백이 실행됩니다. 반면, 체크 예외에 대해서는 기본적으로 롤백을 수행하지 않습니다. 따라서, 리포지토리 계층에서 체크 예외를 사용하게 될 경우, 이를 명시적으로 롤백 대상으로 지정해주기 위해서는 @Transactional
애노테이션의 rollbackFor
속성을 통해 해당 체크 예외를 롤백 대상으로 지정해주어야 합니다.
외부 서비스 호출 및 롤백 처리: 서비스 단에서 외부 서버로 API를 호출하고, 특정 조건에서 트랜잭션을 롤백해야 하는 경우에는 우선 서버의 응답을 평가합니다. 실패 응답이거나 기대치에 못 미치는 결과를 받았을 때, 이를 롤백의 조건으로 삼아 언체크 예외를 직접적으로 던지거나, 서비스 레이어 내에서 명시적인 롤백 처리 로직을 구현할 수 있습니다. 언체크 예외를 던짐으로써 스프링 컨테이너가 트랜잭션 롤백을 자동으로 처리하도록 유도할 수 있습니다.
Wind Thomas님의 질문 상황에 가장 근접한 내용으로, 잘 관리된 예외 처리와 롤백처리 방안에 대한 예시를 찾을 수 있는 트랜잭션 전파 시 체크 예외를 활용한 복구 처리 관련 문의 에 대한 답변에 유용한 정보가 있을 수 있습니다. 이 내용에서는 체크 예외를 활용한 롤백 및 복구 처리 방식에 대한 구체적인 방법과 예시 코드가 제공되어 있어 해당 주제와 관련된 좋은 인사이트를 제공할 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.