스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링 - 회원 도메인과 레포지토리 만들기
parkrams
2023. 3. 16. 09:33
728x90
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; // 실무에서는 동시성 문제 때문에 long 말고 다른것~
@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)); // null 반환될 가능성이 있으면 Optional.ofNullable()로 감싸준다
}
@Override
public Optional<Member> findByName(String name) {
return store.values().stream() // 루프로 돌리겠다
.filter(member -> member.getName().equals(name)) // 멤버에서 멤버.겟네임이 name 파라미터로 넘어온 값하고 비교
.findAny(); // 하나라도 참으면 반환 (결과가 옵셔널로 반환) , 끝까지 돌렸는데 없으면 null 포함 되어 반환
}
@Override
public List<Member> findAll() {
return new ArrayList<>(store.values()); // store.values() == members
}
public void clearStore(){
store.clear(); // 스토어를 싹 비우거든요~
}
}
-- 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC DB 접근 기술 ( 김영한 )
728x90