해결된 질문
작성
·
238
0
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에 대해 학습하시고 직접 확인해보시면서 코드로 확인해보시길 바라며
그럼에도 해결이 되지 않는 궁금증이 있으시다면 질문 남겨주세요.
감사합니다.
답변 감사합니다 ^^