인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

yongeun612님의 프로필 이미지
yongeun612

작성한 질문수

스프링 DB 1편 - 데이터 접근 핵심 원리

트랜잭션 - 적용2

MemberServiceV2Test관련 질문 드립니다!

작성

·

530

3

[질문 템플릿]

1. 강의 내용과 관련된 질문인가요? 예

2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예

3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예

 

[질문 내용]

MemberServiceV2Test를 보면

 

memberRepository에서 accountTransfer(정상 이체) 테스트를 보면 V1버전과는 다르게 findById를 할 때 트랜잭션의 커넥션을 유지하기 위해 Connection을 파라미터로 전달을 받아서 실행을 해야되는 것으로 알고 있습니다.

 

하지만 강의에서는 MemberServiceV2Test에서 findById를 사용할 때 memberId 파라미터만 전달하여 V1의 Repository를 사용하고 있는 것 같아서 질문 드립니다.

 

요약:

MemberServiceV2Test 의 accountTransfer() 테스트에서

이 소스코드를

 

를 전역 필드에 선언하고

이렇게 소스코드를 수정해야 하는 것이 아닌가 생각해서 질문 드립니다.

 

---------------------------------

추가

 

MemberRepositoryV2 클래스에서 findById 메서드가 

findById(String memberId)

findById(Connection con, String memberId)

두 개가 동시에 존재해서 강의의 경우도 실행이 된 것 같습니다.

큰 문제는 아니지만 하나의 트랜잭션 내에서 findById(String memberId) 메서드로 여러번 호출할 경우 커넥션이 유지가 안되는 것이 맞는지.. 궁금합니다.

긴 질문 글 읽어주셔서 감사합니다.

 

 

항상 좋은 강의 감사합니다!!

답변 1

3

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

안녕하세요. yongeun612님

질문 주신 것 처럼 이 경우 테스트에서는 서로 다른 커넥션이 사용되는 것이 맞습니다.

  • memberService.accountTransfer() //다른 커넥션(내부에서는 같은 커넥션)
  • findById() //다른 커넥션
  • findById() //다른 커넥션

여기서 중요한 것은 accountTransfer()안에서만 같은 커넥션이 사용되면 됩니다. accountTransfer()의 시작과 끝이 트랜잭션 범위이니까요^^

테스트에서는 accountTransfer()를 통해 저장된 데이터가 잘 저장되었는지 확인하는 것이 목적이기 때문에, 이 경우 같은 커넥션을 사용해도 되고, 다른 커넥션을 사용해도 됩니다.

감사합니다.

yongeun612님의 프로필 이미지
yongeun612
질문자

감사합니다!

yongeun612님의 프로필 이미지
yongeun612

작성한 질문수

질문하기