코딩왕랄프👊🏻

[Spring] 웹 어플리케이션 계층 구조 예시 (회원 관리) 본문

Spring

[Spring] 웹 어플리케이션 계층 구조 예시 (회원 관리)

hyerm_2 2022. 3. 16. 15:58
반응형
SMALL

간단한 회원 관리 예제를 통해 앞서 공부했던 Web Application 계층 구조에 대해 복습하자.

 

각 회원은 간단하게 회원 id, 이름을 가지고 있다고 가정하고,

기능은 회원을 새로 등록, 조회 하는 기능이 있다고 예를 들자.

 

 

우선, Entity Class라고도 불리는 Domain을 설정하자.

"Domain" 은 DTO 처럼 set, get 함수가 존재한다. 

package example.spring.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;
	  } 
}

 

 

다음으론 "Repository"를 설정하자.

이 Repository는 interface로 설정한다.

package.example.spring.repository;

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

 

 

위의 Repository를 구현하는 "Repository 메모리 구현체"를 설정하자.

이것은 Repository Interface 내 함수의 기능 코드들이 적혀 있다.

  package example.spring.repository;
  
  import example.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();
	  } 
  }

 

 

 

반응형
LIST