BE Study/Spring

회원 도메인과 리포지토리 만들기

subengineer 2024. 6. 20. 17:26

domain의 member id, name은 private으로 설정하고 외부에서 접근할 때 getter/setter로 호출

 

MemberRepository Interface, 아직 리포지토리를 어떤 것을 채택할 지 안 골랐기 때문에 인터페이스로 작성.

Member save(Member member) : 회원을 입력받으면 저장

Optional<Member> findById(Long id) : id를 입력받으면 일치하는 회원 출력

Optional<Member> findByName(String name) : name을 입력받으면 일치하는 회원 출력

List<Member> findAll() : 모든 회원 출력

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());
    }
}

memory level에서 interface를 구현