본문 바로가기
Spring 입문

스프링MVC 입문09

by danny-j 2022. 11. 10.

domain/Member.class

package com.danny.learningspring.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;
    }
}
  • 식별자로 사용될 시스템이 정하는 id
  • name은 회원 이름

 

repository/MemberRepository.interface

package com.danny.learningspring.repository;

import com.danny.learningspring.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();
}
  • save - 회원가입
  • findbyId - 회원정보 id로 조회
  • findbyName - 회원정보 name로 조회
  • findAll - 모든 회원 조회
  • Optional - null값을 처리하는 방법중 하나

 

repository/MemoryMemberRepository.class

package com.danny.learningspring.repository;

import com.danny.learningspring.domain.Member;
import org.springframework.stereotype.Repository;

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

}
  • 인터페이스의 구현체
  • implements MemberRepository를 해주고 option+enter로 method들도 implements해줌
  • save할 때, store에 생성한 sequence와 parameter로 받은 member를 넣어줌
  • findById를 할 때 null이여도 반환할 수 있게 Optional.ofNullable()로 감싸줌
  • findByName할 때 parameter로 받은 name과 일치하는지 loop를 돌며 찾음 .filter(member -> member.getName().equals(name)), 마찬가지로 Optional로 감싸줌
  • findAll - ArrauList타입으로 리턴

 

 

'Spring 입문' 카테고리의 다른 글

스프링MVC 입문11  (0) 2022.11.10
스프링MVC 입문10  (0) 2022.11.10
스프링MVC 입문08  (0) 2022.11.09
스프링MVC 입문07  (0) 2022.11.09
스프링MVC 입문06  (0) 2022.11.09

댓글