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

명수찬님의 프로필 이미지
명수찬

작성한 질문수

스프링 핵심 원리 - 기본편

회원 도메인 실행과 테스트

Member 객체에 변수를 넣었을 때,

해결된 질문

작성

·

238

0

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

[질문 내용]
아주 기본적인 질문인데, 도움 주시면 감사하겠습니다ㅠㅠ
 
Member findMember = memberService.findOne(saveId).get();

만약에 Member 객체의 findMember에 findOne 메소드를 사용하는 경우에,

public Optional<Member> findOne(Long memberId){
return memberRepository.findById(memberId);}
public Optional<Member> findById(Long id) {
return Optional.ofNullable(store.get(id));}

Optinal<Member> 객체에 id를 담아서 가져오는 것으로 이해했는데,

그렇다면 Member 객체가 생기면서 id라는 변수(클래스 변수...? 키..?)와 값을 가져와서 findMember 인스턴스에 그 부분만 할당을 하는 것인가요?

이해를 잘 못해서 질문도 조금 난해한 것 같은데 조언 부탁드리겠습니다ㅠ

그리고, Optianl<Member>와 <Member>는 서로 다른 객체인데 Optinal<Member>에 담겨진 값을 <Member> 객체에 대입할 수 있나요..? <Member> 객체가 더 큰 타입이라 자동 형변환이 되는 것인지도 궁금합니다..!

좋은 강의와 도움 주시는 서포터 분들 항상 감사합니다.

답변 1

0

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

이 코드에 대해 간략히 설명 드리면, member 정보가 담긴 저장소(MemberRepository)에서 회원의 ID(memberID)로 조회를 합니다. member 저장소에 해당 member(id)가 있을 수도 있고, 없을 수도 있기 때문Optional 타입으로 반환을 지정한 것입니다.

Member객체 자체를 반환하기 때문에 member id라던지 기타 member의 변수 정보가 포함되어있겠죠?

 

그리고

이 코드를 자세히 보시면 끝에 .get()이 되어있는 것을 볼 수 있는데요,

Optional 타입으로 반환되지만 get()을 통해 Optional에서 Member를 꺼내올 수 있습니다. 

 

이러한 뽑기를 아시는지 모르겠지만,, 뽑기를 예시로 들면

플라스틱의 뽑기 공이 Optinal 타입이라면, .get()은 뽑기 플라스틱을 분리시키는 기능이고

뽑기 공 안에 있는 내용물이 Member라고 보시면 됩니다.

 

답변을 확인하시고 나서 추가적인 궁금증이 있으실 수 있을 것 같아요.

추가적인 내용은 Optional에 대해 학습하시고 직접 확인해보시면서 코드로 확인해보시길 바라며

그럼에도 해결이 되지 않는 궁금증이 있으시다면 질문 남겨주세요.

감사합니다.

명수찬님의 프로필 이미지
명수찬
질문자

답변 감사합니다 ^^

명수찬님의 프로필 이미지
명수찬

작성한 질문수

질문하기