09 회원 도메인과 레포지토리

이연희·2022년 1월 15일
0

Spring

목록 보기
9/105
post-custom-banner

domain 패키지

Member.java 클래스

package hello.hellospring.domain;

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

}
  • Member class 생성
  • id, name
  • getter, setter

repository 패키지

MemberRepository.java 인터페이스

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);//저장소에서 id 찾아오기
    Optional<Member> findByName(String name);//저장소에서 name 찾아오기
    List<Member> findAll();
}
  • 저장, id찾기, name찾기, 전체 찾기

MemoryMemberRepository.java 클래스

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));//값이 null이어도 가능
    }

    @Override
    public Optional<Member> findByName(String name) {
        return store.values().stream() //loop로 돌림
                    .filter(member -> member.getName().equals(name))//lambda 사용, 파라메타 name이 member의 name과 같은지 확인, 같은 경우에만 filter
                    .findAny();//필터링 된 데이터 중 찾으면 반환
    }

    @Override
    public List<Member> findAll() {
        return new ArrayList<>(store.values());//member들이 반환됨
    }
}
  • 인터페이스 구현

스프링입문09(김영한)

profile
공부기록
post-custom-banner

0개의 댓글