작성
·
194
0
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가 끝나는 시점에 정상 흐름으로 인정됩니다.
감사합니다.