[Spring Boot] 회원 관리 예제

이상협·2023년 1월 16일
0

Spring Boot

목록 보기
6/13

🎈요구사항

  • 데이터: 회원ID, 이름
  • 기능: 회원 등록, 조회
  • 아직 데이터 저장소가 선정되지 않음
  • 아직 데이터 저장소가 선정되지 않아서, 인터페이스로 구현 클래스를 변경할 수 있도록 설계

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

회원 객체

// /src/main/java/com.example.hello_spring/domain/Member

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

회원 레포지토리 인터페이스

// /src/main/java/com.example.hello_spring/repository/MemberRepository

import com.example.hello_spring.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();
      
}

회원 레포지토리 메모리 구현체

// /src/main/java/com.example.hello_spring/repository/MemoryMemberRepository

import com.example.hello_spring.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 List<Member> findAll() {
    	return new ArrayList<>(store.values());
    }
    
    @Override
    public Optional<Member> findByName(String name) {
    	return store.values().stream()
        		.filter(member -> member.getName().equals(name))
                .findAny();
    }
    
    public void clearStore() {
    	store.clear();
    }
}

0개의 댓글