private static Map<Long, Member> store = new HashMap<>(); 코드 이해가 안가요
package Hello.hellospring.domain;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
@Entity
public class Member {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package Hello.hellospring.repository;
import Hello.hellospring.domain.Member;
import java.util.*;
public class MemoryMemberRepository implements MemberRepository {
private static Map<Long, Member> store = new HashMap<>();
private static long sequence = 0L;
@Override
public Member save(Member member) {
member.setId(++sequence);
store.put(member.getId(), member);
return member;
}
@Override
public Optional<Member> findByid(Long id) {
return Optional.ofNullable(store.get(id));
}
@Override
public Optional<Member> findByName(String name) {
return store.values().stream()
.filter(member -> member.getName().equals(name))
.findAny();
}
@Override
public List<Member> findAll() {
return new ArrayList<>(store.values());
}
public void clearStore() {
store.clear();
}
}
MemoryMemberReposirory.java 코드에서
private static Map<Long, Member> store = new HashMap<>(); 부분이 이해가 가질 않습니다..
ㅠㅠ Map으로 <키 , 값>을 받으려고 하는것까진 알겠는데 왜 키는 id의 데이터타입인 Long으로 들어가는데 값은 name의 데이터타입인 String으로 들어가는것이 아닌 Member 객체로 들어가게 되는건가요..??
답변 1
1
안녕하세요. ssisaaas님, 공식 서포터즈 OMG입니다.
동일한 질문에 대해 이해하기 쉬운 예시를 들어 설명드린 답변이 있어 링크(클릭) 참고해주세요 ^^
감사합니다.
0
글 보고도 잘 이해가 안가서 댓글 남깁니다 ㅠㅠ
private static Map<Long, Member> store = new HashMap<>();Member이 Member 객체만 들어올 수 있어서 member 필드인 Long id, String name 필드 두 개 다 사용 가능하니까 Member로 넣은거면
Map<Member, Member>도 되지않나요..? Long id가 있으니까 key값으로 id를 주고 value값으로 name을 주면 되는거 아닌지..ㅠㅠ 헷갈립니다
0
Map을 아신다는 가정으로 설명드리면,
key로 id(몇번째 사람인지)
value로 Member(사람 그 자체 정보=> 이름뿐만 아니라, 나이, 성별 심지어 id까지 알 수 있는)를 부여하여 Member의 모든 정보를 알기 위해 key는 id이고, value를 Member로 한것입니다.
만약 key로 id,
value로 name만 했다면
id로 접근해서 얻을 수 있는 정보는 name밖에 저장하고 확인할 수 밖에 없는 구조입니다.
아래에서 첫번째 구조를 보면 key(id)로 Member 자체의 정보를 갖고 있기 때문에 Member의 id, 이름, 성별, 나이 등에 대한 정보를 관리하고 조회할 수 있지만,
두번째 구조에서는 id로 이름밖에 알 수 없습니다.

부연 설명이 필요하면 댓글 남겨주세요 :)
0
앗 ! 그럼 제가 이해한게 맞았었네요 ..!!
"어차피 id값은 key값으로 조회가 가능한데 왜 굳이 value에서도 id를 조회가능하게 만들어야하지 ?" 라고 생각했었어서 아리송 했었던것같아요..ㅠㅠ 감사합니다
..
0
76
2
Unused property.....
0
101
2
project JDK is misconfigured
0
132
2
외부 API의 ID 타입(String/UUID)과 내부 도메인의 ID 타입(Long)이 불일치할 때의 설계 정석
0
83
2
단위/통합 테스트 버전충돌 문제
0
91
2
❗️springboot 4.0.2 버전 aspectj dependency 설정❗️
0
230
1
왜 컨트롤러는 변한게 없는데 새로 만든 html 파일이 뜨나요?
0
104
2
윈도우 build test오류 질문
1
102
2
테스트 관련 공부에 대한 조언을 얻고 싶습니다
0
101
2
테스트 실행 시 에러 질문
0
292
1
name을 통한 비교와 객체를 통한 비교
0
77
1
빌드 후 libs 없음
1
129
1
윈도우 gradlew.bat 에러
0
167
1
@PostMapping("/members/new")가 동작하지 않습니다
0
89
1
java static class와 kotlin class
0
79
1
스프링 DB연결
0
126
1
소요 시간
0
87
2
ddl.sql에 빨간 밑줄
1
102
2
welcome page 에러
0
183
3
잘 모르겠습니다.
0
164
2
fail을 똑같이 쳤는데 오류가 발생해요
0
156
2
index.html Welcome page
0
124
1
프로젝트 gradle-groovy ?
0
369
1
테스트코드 메서드명 한글
0
202
2





