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

김주형님의 프로필 이미지
김주형

작성한 질문수

스프링 핵심 원리 - 기본편

회원 도메인 개발

findById(Long memberId)가 궁금합니다

작성

·

579

0


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

[질문 내용]

안녕하세요 선생님 강의 즐겁게 잘 보고 있습니다!
 
4:40부터 회원저장소와 회원서비스 인터페이스에
메서드를 작성하는 것부터 흐름이 진행되기 시작하는 곳을
무작정 외우려다가 이해하고 싶어서 질문드립니다.
 
1. Member의 getId()를 쓰지않고 findById()를 쓰신 이유가 궁금합니다.
2. 1이 어떻게 가능한건지 잘 이해가 가지 않습니다.
저의 어떤 기초지식이 부족해서 이해를 못하는 건지 파악이 안 되는 상황이고 도움을 요청드립니다
 
 
 

답변 1

4

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

 

1.

STEP1 ) MemoryMemberRepository.class

findById 메서드는

데이터베이스 대신 사용하는 메모리 저장소인 store에서 파라미터로 받은 memberId로 Member객체를 가져와서 반환합니다.

 

STEP2) MemberServiceImpl.class

findMember 메서드는 파라미터로 받은 member의 id (memberId)를 통해 저장소에서 id로 Member를 찾아서 반환합니다.

 

질문주신 부분에 대해 답변을 드리면

Member의 getId는 Member객체 자체에서 id를 가져오는 반면, findById는 Member들의 저장소에서 member의 Id를 통해 member를 조회한 후, Member를 반환한다는 차이점이 있습니다.

예를 들어,

인프런에서 제 고유id는 202271입니다. 아래의 링크를 들어가보시면 제 정보가 출력되는 것을 확인하실 수 있을꺼에요.

https://inflearn.com/users/202271

member.getId()는 저라는 회원 객체의 id(202271)를 반환하는 반면,

 

[1]findById()는 findById(202271) 혹은

Long omgId = 202271L;

findById(omgId);

[2]

Member omg;
인프런회원데이터저장소.findById(omg.getId());

와 같이 데이터저장소에서 조회하고자하는 id를 통해서 회원데이터를 가져온다는 차이점이 있습니다.

[1]과 [2]의 경우,인프런 회원저장소에서 조회하고자 하는 id에 제 id를 인자로 넣었으니 제가 조회되겠죠?

 

2.

(자바와 스프링에 대한) 프로그래밍 경험이 적다면 어려울 수 있지만, 경험이 조금 있으신 분들(조금만 학습하시게 되면) 어려운 개념은 아니라고 생각합니다.

프로그래밍에 대한 학습을 꾸준히 하신다면 어느순간 생각이 트이면서 이해하시게 될거라고 생각하며 그렇게 되기까지 영한님과 서포터즈가 도움드릴테니 강의 수강하시다가 강의와 관련된 궁금한점 있으시면 언제든 질문 남겨주세요.

 

감사합니다.

김주형님의 프로필 이미지
김주형
질문자

와... 정확하게 이해했어요!! 기대한 것보다 설명이 너무 좋아요^^ 정말 감사합니다

설명해주신걸 보고 이해를 하고있는 과정에서 궁금한게 생겨서 리플 남깁니다
제 id가 1이고 name이 20777이면
제가 getid라는 걸로 호출을 하면 1(20777) 이 나오는 거고 findById(1) 하면 20777이 나온다는 말씀으로 이해했습니다 
그럼 저걸 조회하는 곳은 전부 store에서 조회하거나 DB에서 조회하는 건가요?

자바 변수에 값을 저장하고 가져올 수도,

DB에 저장하여 DB에서 꺼내서 조회 할 수 있겠죠.

강의에서는 store라는 Map데이터(=store 변수)에 값을 저장한 것으로 보시면 됩니다. 

김주형님의 프로필 이미지
김주형

작성한 질문수

질문하기