<aside> 📁

코드


image.png

</aside>

Member
-------
package com.example.demo.Domain;

public class Member {

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

MemberRepository
----------------
package com.example.demo.repository;

import com.example.demo.Domain.Member;

import java.util.List;
import java.util.Optional;

public interface MemberRepository {
    Member save(Member member); //회원이 저장소에 저장
    Optional<Member> findById(Long id); //Id를 찾아옴
    Optional<Member> findByName(String name); //Name을 찾아옴
    List<Member> findAll(); //지금까지 저장된 모든 회원 리스트 반환
}

MemoryMemberRepository
----------------------
package com.example.demo.repository;

import com.example.demo.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) {
        //map에서 동일한 name을 찾아 반환, 만약 없으면 Optional에서 null 반환
        return store.values().stream()
                .filter(member -> member.getName().equals(name))
                .findAny();
    }

    @Override
    public List<Member> findAll() {
        return new ArrayList<>(store.values());
    }
}