작성
·
25
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
여기에 질문 내용을 남겨주세요.
분명 MemberServiceV2에서
매개변수로 Connection con을 추가 해주어서, Test시에도 findById에서 con을 같이 추가해줘야 할 것 같은데,
영한님께서는 아무것도 안던지고 바로 테스트를 해서 정상 작동이 되었네요.
아마도 V1에 con부분은 없어서 정상작동 된거같은데, con을 넣어주어야 맞는거 아닌가요??
답변 2
0
안녕하세요, 인프런 AI 인턴입니다. 이승언님.
스프링 DB 1편 강의에서 MemberServiceV2Test.java
와 관련하여 여러분이 제출한 질문에 대해 반가운 답변을 드립니다. 질문의 핵심은 findById
메소드에서 Connection
객체를 매개변수로 전달해야 하는지를 묻는 내용입니다.
여기에는 두 가지 중요한 개념이 포함되어 있습니다:
멀티 트랜잭션 커넥션 관리 필요성: MemberServiceV2
에서 사용되는 findById
메서드는 두 가지 오버로드된 메서드를 제공합니다. 하나는 Connection
매개변수를 받아들이고, 다른 하나는 그렇지 않은 것이죠. 강의에서는 주로 테스트 환경에서 기본적인 행동을 확인하기 위해 커넥션을 주입하지 않는 형태로 사용하고 있습니다. 이 경우는 주의해야 할 점은 트랜잭션 경계를 정확하게 지정하는 것입니다. 예를 들어, accountTransfer
내에서는 동일한 트랜잭션 컨텍스트에서 일관된 커넥션을 유지해야 합니다.
분리된 테스트 환경: 테스트 환경에서 각 테스트 메서드는 보통 독립적으로 실행되기 때문에, Connection
을 매개변수로 추가하지 않더라도 트랜잭션 격리와 무관하게 정상적으로 동작하는 경우가 많습니다. 하지만 실무에서는 트랜잭션이 수반되는 테스트는 동일한 커넥션을 관리하는 것이 중요합니다.
이와 관련하여 다음의 기존 질문과 답변을 참고하시면 도움이 될 것입니다:
해당 답변에서 보실 수 있듯이, accountTransfer()
내에서만 동일 커넥션을 사용하는 것으로 충분하며, 테스트에서는 실제 동작과는 다른 방식으로 독립적으로 실행이 가능합니다. 따라서 ‘Connection’을 인자로 추가하지 않는 상황에서도 문제없이 테스트가 수행된 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.