*인프런 강의 중 일부 예제 코드를 발췌하였으며, 주석을 통해 학습 이해도를 높이는 방향으로 스터디하고 있습니다.
.
설계한 인터페이스를 활용하여 구현체(데이터 저장소)를 직접 생성해봅니다.
1. MemoryMemberRepository
import domain.Member;
import java.util.*;
public class MemoryMemberRepository implements MemberRepository {
// map : 리스트/배열을 순차적으로 요소의 값을 구하는게 아니라 key-value 얻기 위함
// Key : id
// Value : Member (필드 확장 고려한 member 객체 인스턴스) ★★
private static Map<Long, Member> store = new HashMap<>();
// key값 생성
private static long sequence = 0L;
// interface 구현
@Override
public Member save(Member member) { // 저장
// id 셋팅
member.setId(++sequence);
// put 메서드를 이용하여 key, value 값 추가
// value - member instance
store.put(member.getId(), member);
// value - member instance (필요한 데이터 반환)
return member;
}
@Override
public Optional<Member> findById(Long id) {
// 실무에서 주로 null-safe로 return
return Optional.ofNullable(store.get(id));
}
@Override
public Optional<Member> findByName(String name) {
// 루프문 대신 stream 처리
return store.values().stream()
.filter(member -> member.getName().equals(name))
.findAny();
}
@Override
public List<Member> findAll() {
// 자바에서 실무할때 list를 많이 쓴다
return new ArrayList<>(store.values());
}
// 테스트 코드 작성시 필요한 부분
public void clearStore() {
store.clear();
}
}
2. Stream 사용하는 이유
업데이트 예정
3. ArrayList 사용하는 이유
사이즈가 동적으로 할당되는 배열임.
[출처]
- https://www.inflearn.com/users/74366/@yh?gad=1&gclid=CjwKCAjwysipBhBXEiwApJOcu11Gmy__QkRwxSjT9pJNflRJSwnlrpg6WfM0r9TRIQD3_uPaKmH3ThoC26QQAvD_BwE
- https://wikidocs.net/207#arraylist
- https://m.blog.naver.com/sosow0212/222877044944
'Spring' 카테고리의 다른 글
클래스 메소드 vs 인스턴스 메소드 단순 코드 비교 (0) | 2023.11.08 |
---|---|
자바 클래스 기본 구조와 용어 (0) | 2023.11.07 |
STEP2 회원 리포지토리 인터페이스 생성 (0) | 2023.11.06 |
STEP1 회원 도메인 객체 생성 (0) | 2023.11.06 |
자바 코드를 통해 살펴본 클래스(Class) (0) | 2023.11.04 |