-
2021.11.18 기록장TIL 2021. 11. 17. 21:43
ToDo
Done
- transaction 버그 수정
Weekly goal
- 책 읽기
- 영어 레퍼런스 읽기
- 북마크 읽기, 정리
TestCode에서의 transactional
test코드가 db와 연동되어 test 해야 한다면 class 레벨에 transactional 어노테이션을 붙여서 많이들 사용한다.
본인도 똑같이 사용하다가 문제를 만나게 되었다.
mybatis 기반 transactionTest() 메서드는 2명의 멤버를 insert 하고 RuntimeException을 발생시키는 메서드이다.
@transactional도 붙어있다.
위의 코드는 @transactional이 붙어있을 때와 안 붙어있을 때의 성공 여부가 바뀐다.
@Transactional이 붙어있을 때 member는 null이 아니고 붙어 있지 않으면 null이 된다.
왜 그럴까?
이유는 전파 속성 때문이었다. 기본적으로 transactional은 REQUIRED속성(기존에 transaction이 있으면 같이 합류함)
이었기 때문에 service내부에서 예외를 터트려도 assertThrow로 잡고 있기 때문에 그냥 넘어가고 밑의 get 할 때 가지고 올 수 있었던 것이다.
해결하려면 따로 트랜잭션이 되게 속성을 바꿔주자.
'TIL' 카테고리의 다른 글
2021.11.22 기록장 (0) 2021.11.21 2021.11.21 기록장 (0) 2021.11.19 2021.11.17 기록장 (0) 2021.11.16 2021.11.16 기록장 (0) 2021.11.14 2021.11.14 기록장 (0) 2021.11.11