작성
·
188
1
안녕하세요.
@TransactionRepository 사용법에 대한 질문을 드리고자 합니다.
join(회원가입) 메서드 내에서 세 개의 레포지토리에 대해 트랜잭션을 걸어주고자 할 때 아래 두 가지 방법 중 어느 것이 옳은지 궁금합니다.
방법1> 트랜잭션이 필요한 메서드에서 해당 엔티티를 트랜잭션 레포지토리로 가져오고 메서드 내에서 사용하기. 그리고 이때 constructor로 가져온 레포지토리는 그대로 유지하기.
(즉, 각각의 엔티티에 대하여 일반 레포지토리와 트랜잭션 레포지토리를 따로 구분하여 사용?)
방법 2> constructor를 통해 각각의 레포지토리를 트랜잭션 레포지토리로 가져오고, 메서드 내에서 this 사용하기.
답변 1
0
방법1>의 경우 join 메서드의 매개변수가 6개로 인식이 되어, 컨트롤러에서 해당 서비스의 메서드를 호출할 때 에러가 발생했습니다. 하지만 API 요청을 하면 정상적으로 동작을 합니다..!
이번에는 방법 2>로 테스트를 해봤습니다.
위 결과를 보면 알 수 있듯이 서비스단에서 @TransactionRepository 데코레이터로 각 엔티티의 레포지터리를 주입받아 사용하니까 정상적으로 트랜잭션이 수행되었습니다.
공식문서(+ 강의내용)에서는 해당 데코레이터를 메서드의 매개변수 안에서 사용했는데, 어떻게 사용하는게 옳은 방법인지 더욱 궁금해졌습니다..ㅠㅜ
트랜잭션 데코레이터 사용법에 대한 보충 설명을 부탁드리겠습니다..!
https://www.inflearn.com/questions/240957
참고하시면 됩니다.
방법2가 더 좋은 방법 같네요.