본문 바로가기

WINK-(Web & App)/Spring Boot 스터디

[2025 1학기 스프링부트 스터디] 이종윤 #3주차

반응형

실습해보기

비즈니스 요구사항

- 데이터: 회원ID, 이름

- 기능: 회원등록, 조회

- 아직 데이터베이스가 선정되지 않음

 

계층구조

계층 설명, 예시 클래스
Controller 사용자의 요청을 받고, 응답을 돌려줌 (API or HTML View 반환) UserController, ApiController
Service 실제 비즈니스 로직 처리 (계산, 조건 등) UserService, OrderService
Repository DB와 직접 통신 (CRUD) UserRepository, JpaRepository
Model 데이터 구조 (DTO, Entity 등) User, Post, Person 등
Domain 핵심 비즈니스 개념, 규칙, 엔티티, 도메인 모델 User, Order, Post, Comment

 

클래스 의존관계

클래스 설명
MemberService 회원 등록, 조회 등의 비즈니스 로직을 담당
MemberRepository (interface) 데이터 저장소를 추상화한 인터페이스
MemoryMemberRepository 메모리에 데이터를 저장하는 구현 클래스 (임시 저장소)
  • MemberService는 MemberRepository 인터페이스만 알고 있음
  • 실제 저장은 MemoryMemberRepository가 처리함
  • 나중에 DB가 정해지면 MemoryMemberRepository만 다른 구현체(DB 버전)로 바꿔끼우면 됨

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

1. 도메인 객체 만들기

public class Member {
    private Long id;
    private String name;
}

→ 회원의 데이터 구조를 만든다. (객체의 뼈대)

 

2. 저장소 인터페이스 만들기

public interface MemberRepository {
    Member save(Member member);
    Optional<Member> findById(Long id);
    List<Member> findAll();
}

→ 회원 데이터를 저장하거나 조회하는 기능을 약속(정의)한다.

 

3. 저장소 구현 클래스 만들기 

public class MemoryMemberRepository implements MemberRepository {
    private Map<Long, Member> store = new HashMap<>();
    ...
}

→ 위에서 약속한 기능을 메모리에 실제로 구현한다.

 

4. 테스트코드 작성

@Test
public void save() {
    Member member = new Member();
    member.setName("spring");
    repository.save(member);
    ...
}

→ 만든 기능이 정상 동작하는지 확인한다.

 

⁜ 배울 것 3가지

  1. 클래스는 역할에 따라 나눠서 만든다
  2. 인터페이스를 만들면 나중에 쉽게 바꿀 수 있다
  3. 테스트는 기능이 잘 돌아가는지 확인하는 도구이다
반응형