findByid와 findByname의 리턴을 다르게 작성한 이유가 있나요?
461
작성한 질문수 4
질문 1 : findByName
@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();
}
여기서 findByName은 필요가 없지 않나요?
MemoryMemberRepository 클레스 에서 hashmap을 사용하면 나중에 키 값으로 해당 이름을 가져오겠다는 뜻으로 보이는데
그러면 키값이 null이면 자동으로 value값도 null이니 굳이 작성하지 않아도 되는 코드 아닌가 라는 생각이 들었습니다.
아! 혹시 value값으로 key값을 찾기 위하여 필요한 코드인가요?
질문 2: 왜 findByid와 findByName 코드가 다른가요? 둘다 동일하게 null인경우 optional을 통해서 null값을 출력하는 과정인데
두 코드가 다를 필요가 없지 않나요?
답변 1
0
안녕하세요. 황 준성.님, 공식 서포터즈 OMG입니다.
1.
hashMap에 다음과 같이 저장되어있다고 할 때,
key(id) / value(member)
1L / {1L,홍길동}
2L / {2L,이순신}
3L / {3L,홍길동}
store.values().stream().filter
로 순회 하므로 value를 순회하는데,
member -> member.getName().equals(Name)).findAny()
이 코드에서 각 Member들의 이름을 파라미터로 받은 name과 비교하여 찾은 데이터를 반환합니다.
홍길동을 찾을 때, 두 명의 동일한 이름을 가진 홍길동 중 한명을 반환한다고 보시면 됩니다.
key가 Null이면 이라고 하셨는데, key가 Null이 발생하는 상황은 언제라고 생각하시는지요??
2.
키값인 id는 고유한 값이지만, name은 고유하지 않기 때문에 둘의 코드가 다릅니다. 구현하는 애플리케이션의 정책에 따라 다르게 동작할 수 있습니다.
감사합니다.
인텔리제이 오류
0
57
1
..
0
121
2
Unused property.....
0
122
2
project JDK is misconfigured
0
170
2
외부 API의 ID 타입(String/UUID)과 내부 도메인의 ID 타입(Long)이 불일치할 때의 설계 정석
0
102
2
단위/통합 테스트 버전충돌 문제
0
104
2
❗️springboot 4.0.2 버전 aspectj dependency 설정❗️
0
261
1
왜 컨트롤러는 변한게 없는데 새로 만든 html 파일이 뜨나요?
0
125
2
윈도우 build test오류 질문
1
123
2
테스트 관련 공부에 대한 조언을 얻고 싶습니다
0
117
2
테스트 실행 시 에러 질문
0
326
1
name을 통한 비교와 객체를 통한 비교
0
83
1
빌드 후 libs 없음
1
155
1
윈도우 gradlew.bat 에러
0
189
1
@PostMapping("/members/new")가 동작하지 않습니다
0
99
1
java static class와 kotlin class
0
92
1
스프링 DB연결
0
149
1
소요 시간
0
97
2
ddl.sql에 빨간 밑줄
1
119
2
welcome page 에러
0
205
3
잘 모르겠습니다.
0
178
2
fail을 똑같이 쳤는데 오류가 발생해요
0
181
2
index.html Welcome page
0
142
1
프로젝트 gradle-groovy ?
0
409
1






