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

까르보떡볶이님의 프로필 이미지
까르보떡볶이

작성한 질문수

스프링 DB 2편 - 데이터 접근 활용 기술

정리

트랜잭션 전파 2관련 질문

작성

·

192

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
MemberService에는 @Transcational를 한 상태이고 MemberRepository, LogRepository 에는 @Transactional 을 정의하지 않은 상태에서 joinV2 method 를 사용하고 log에서 예외를 발생하는 상황이 궁금해서 실행해 봤습니다.LogRepository 의 예외를 Service에서 잡았기 때문에 전체적으로는 commit 하는 상황을 예상하기는 했는데 LogRepository의 save에서 예외가 발생하기 때문에 Log find 테스트에서 isEmpty를 예상했는데 로그를 찍어보니 로그예외_outerTxOff_success row가 log table 에 insert가 되어있네요.logRepository에서는 runtime exception을 반환하는데 어떻게 log table에 로그예외... username이 insert되는 거죠?

답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 까르보떡뽁이님

MemberRepository와 LogRepository에 @Transactional을 정의하지 않으면 해당 부분에서 예외가 발생하더라도 트랜잭션과는 무관하게 됩니다.

쉽게 이야기해서 트랜잭션의 범위가 MemberService의 시작과 끝으로 하나만 존재하게 됩니다.

그런데 MemberService에서 예외를 잡아서 처리했기 때문에 MemberService가 끝나는 시점에 정상 흐름으로 인정됩니다.

감사합니다.

까르보떡볶이님의 프로필 이미지
까르보떡볶이

작성한 질문수

질문하기