[SPRING] 회원 관리 예제

.·2024년 6월 7일

SPRING

목록 보기
8/15

1. 비즈니스 요구사항 정리

1) 요구사항 정리

회원 관리 프로젝트를 만들어볼건데, 요구사항은 다음과 같다.

  • 데이터: 회원ID, 이름
  • 기능: 회원 등록, 조회
  • 전제: 데이터 저장소 미선정

2) 일반적인 웹 어플리케이션의 계층 구조

일반적인 웹 어플리케이션의 구조이다.
컨트롤러는 웹 MVC의 컨트롤러 역할,
도메인은 주로 데이터베이스에 저장하고 관리되는 비즈니스 도메인 객체,
서비스는 도메인 객체를 가지고 핵심 비즈니스 로직 동작,
리포지토리는 데이터베이스에 접근하여 도메인 객체를 DB에 저장 및 관리하는 역할을 한다.

3) 클래스 의존관계

  • 아직 데이터베이스가 선정되지 않은 관계로 우선 인터페이스를 만들고, 구현 클래스로 변경할 수 있도록 설계
  • 데이터베이스는 RDB, NoSQL 등 다양한 저장소를 고려중인 상황으로 가정
  • 개발을 진행하기 위해 초기 개발 단계에서는 구현체로 가벼운 메모리 기반의 데이터 저장소 사용

클래스 간의 의존관계는 다음과 같다.
아직 데이터베이스가 선정되지 않은 상황이기 때문에, 회원 리포지토리는 인터페이스로 설계하고, 가벼운 메모리 구현체를 이용해서 구현한다.
향후 데이터베이스가 선정되고 나면 바꿔끼울 예정이므로 인터페이스를 정의한다.

2. 회원 도메인과 리포지토리 생성

Member.java

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

MemberRepository.java

package hello.hellospring.repository;

public interface MemberRepository {

    // 회원 저장
    Member save(Member member);
    // 회원아이디로 회원 조회
    Optional<Member> findById(Long id);
    // 회원이름으로 회원 조회
    Optional<Member> findByName(String name);
    // 회원 리스트 조회
    List<Member> findAll();

}

3. 회원 리포지토리 테스트 케이스 작성

4. 회원 서비스 개발

5. 회원 서비스 테스트

0개의 댓글