Java/[인프런] Spring 강의

[SpringBoot] #09 - 회원 도메인과 리포지토리 만들기

냠냠쿠 2023. 8. 10. 22:32
728x90
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard

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

  • domain 패키지에 Member 클래스 생성
  • ALT + Insert 를 눌러서 getter setter까지 만들어준다.
public class Member {

    private Long id; //시스템이 저장하는 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;
    }
}
  • repository 패키지 생성하여 MemberRepository 인터페이스 생성
package hello.hellospring.repository;

import hello.hellospring.domain.Member;

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

public interface MemberRepository {

    Member save(Member member);
    Optional<Member> findById(Long id);
    Optional<Member> findbyName(String name);
    //Optional 는 find 했는데 null일 수 있는데 null이 반환될 때 Optional로 감싸서 null 반환
    List<Member> findAll();
}
  • MemoryMemberRepository 클래스 생성
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에 저장 (Map에 저장됨)
        store.put(member.getId(), member);
        return member;
    }

    @Override
    public Optional<Member> findById(Long id) {
        //store에서 꺼낼건데 null일 수 있으니 Optional로 감싸준다.
        //null이어도 감싸서 반환하면 클라이언트에서 작업 가능
        return Optional.ofNullable(store.get(id));
    }

    @Override
    public Optional<Member> findbyName(String name) {
        return store.values().stream().filter(member -> member.getName().equals(name)).findAny();
        //루프를 돌면서 member.getName()이 파라미터로 넘어온 name과 같은지 확인하고 같은 경우에만 필터링
        //끝까지 찾았는데 없으면 Optional에 감싸져서 반환

    }

    @Override
    public List<Member> findAll() {
        //store.values() == 멤버들이 반환됨.
        return new ArrayList<>(store.values());
    }
}
 
728x90