회원 관리 예제 - 백엔드

비즈니스 요구사항 정리

데이터

  • 회원 ID

  • 이름

기능

  • 회원 등록

  • 회원 조회

  • 아직 데이터 저장소는 선정되지 않음

일반적인 웹 애플리케이션 구조

컨트롤러

  • 웹 MVC의 컨트롤러 역할

서비스

  • 핵심 비즈니스 로직 구현

도메인

  • 비즈니스 도메인 객체

  • 회원, 주문, 쿠폰 등 주로 데이터베이스에 저장하고 관리되는 데이터를 말한다.

리파지토리

  • 데이터 베이스에 접근 하는 객체

  • 도메인 객체를 DB에 저장하고 관리한다.

클래스 의존 관계 설정

  • 아직 DB가 정해지지 않았으므로 우선 인터페이스로 구현 클래스를 변경할 수 있도록 설계한다.

  • DB는 RDB, NoSQL 등 다양한 저장소를 고민중인 상황으로 가정한다.

  • 개발을 진행하기 위해 초기 개발 단계에서는 가벼운 메모리 기반의 데이터 저장소를 사용한다.

회원 객체

회원 Repository

Reference

atomic vs volatile vs synchronized

테스트

  • After Each

    • 한 번에 여러 테스트를 하면 메모리 DB에 직전 테스트의 결과가 남을 수 있다. 그럼 다음 테스트에 영향이 가므로 각 테스트가 종료될 때마다 메모리 DB에 저장된 데이터를 삭제한다.

    • 테스트는 각각 독립적으로 실행되어야 한다. 테스트 순서에 의존 관계가 있으면 좋지 않다.

회원 Service

위 코드는 회원 Service가 Repository를 직접 생성하고 있다.

회원 Service를 생성할 때 DI 하도록 변경한다.

테스트

  • BeforeEach

    • 각 테스트 실행 전에 호출되는 메서드

Last updated

Was this helpful?