본문 바로가기
Programming/Java

Spring boot 시작하기 - 4강(회원 도메인과 리포지토리)

by Wilkyway 2020. 11. 25.
반응형

회원 도메인과 리포지토리를 만들겠습니다.

 

폴더구조는 아래와 같이 하여 domain 패키지를 만들고 내부에 Member 클래스를 만들어줍니다. 그리고 repository 패키지를 만들어준 후 MemberRepository 인터페이스와  MemoryMemberRepository클래스를 만들어줍니다.

 

1. Member 클래스

package hello.hellospring.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;
    }
}

2. 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);
    List<Member> findAll();
}

3. MemoryMemberRepository 클래스

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;

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

    public void clearStore(){
        store.clear();
    }
}
반응형

댓글