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

콩순님의 프로필 이미지
콩순

작성한 질문수

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

회원 관리 웹 애플리케이션 요구사항

save() 테스트관련 질문입니다.

작성

·

320

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]

savedMember 에는 id, username, age 가 세개 모두 입력된 객체가
findMember 에는 username 과 age 만 가지고 있는 Member 타입 객체가 생성되는 것이 아닌가요?

.get() 메서드 설명 읽어보면 value 를 반환한다고 되어있고.

save() 메서드에서는 시퀀스로 id 값까지 채워넣은 객체를 반환하고 있는걸로 보여서욤

저 @21fd... 는 객체 주소인거지요? 가져오는 데이터가
id, username, age / username, age 이렇게 다르지만
같은 주소값에 저장되어있다 라는걸 확인하는건가요?

답변 2

0

안녕하세요. Juyeon Jin님, 공식 서포터즈 OMG입니다.

save() 동작은 아래와 같이

L1. 회원 객체를 전달받아서 id를 부여하고, (전달받을 때는 id가 없음)

L2. 저장소에 해당 id에 대한 회원 객체를 저장소에 보관합니다.

L3. 전달받은 객체를 그대로 반환합니다.(이 때는 id가 부여된 상태)image

savedMember는 따라서 id, username, age가 모두 있는 인스턴스입니다.

그리고 findMember를 객체를 생성하는 것이 아닌, 이미 생성된(savedMember) 객체의 id 값으로 저장소에서 객체를 조회했을 때의 member입니다.

image

위에서 말씀드린 것을 예시 상황을 말씀드리면

인프런 서비스가 최초 오픈을 하였고 Juyeon Jin님이 첫번째 회원(id : 1)이라고 가정하겠습니다.

Juyeon Jin님이 회원가입했을 때의 Juyeon Jin님의 객체가 savedMember이고,

인프런 DB에서 id가 1번인 회원을 조회하여 나온 결과가 findMember입니다.

따라서 둘은 같은 객체 인스턴스로 보는 것이 맞습니다.

 

 

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다.

제시해주신 질문 내용은 save() 메서드의 반환값과 관련하여, 리포지토리에 저장된 객체에 id가 포함되어 있음에도 불구하고 테스트 시 findMember 객체에는 id가 없는 것처럼 보인다는 것에 대한 질문으로 보입니다. 또한, @21fd...가 객체의 주소값인지에 대한 질문도 포함되어 있습니다.

이에 관련하여 김영한 강사님께서는 save() 메서드가 반환하는 객체에 대한 이유와 해당 객체를 리턴하는 이유에 대해 답변해주신 바 있습니다. 다음 링크에서 유사한 질문에 대한 답변을 확인하실 수 있습니다.

  • 강의명: 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
  • 질문 제목: MemberRepositoryTest / Testcase 작성 질문드립니다.
  • 질문 링크

위 링크에서 강사님이 제공한 답변을 참고하시면 궁금증이 해소될 것입니다. 추가적으로 질문하신 @21fd...가 객체의 주소값을 나타내는 것인지에 대한 세부 내용도 확인하실 수 있을 것입니다.

감사합니다.

콩순님의 프로필 이미지
콩순

작성한 질문수

질문하기