숙박 예약 프로젝트 - 1. 프로젝트 구조

소금·2025년 4월 28일
0
post-thumbnail

우선 회원 관련 기능부터 구현할 것이기 때문에, 회원 DB 구조부터 짜기로 한다.

1. DB 구조

1-1. 회원

mem_seqno PK
member_id UNIQUE NOT NULL
password NOT NULL
name NOT NULL
email UNIQUE NOT NULL
country_code NOT NULL
phone UNIQUE NOT NULL
role_no NOT NULL
status_no NOT NULL
created_at DEFAULT CURRENT_TIMESTAMP
updated_at DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

1-2. 넘버 코드

(프로젝트 전반에 쓰이는 넘버코드를 정의하는 테이블)

no_seqno PK
group_name NOT NULL
code_value NOT NULL
code_name NOT NULL
code_desc NULL
sort_order NULL
created_at DEFAULT CURRENT_TIMESTAMP

2. BackEnd 구조 정의

관리자 페이지도 함께 구현 예정이기 때문에 각 레이어별 user(사용자) / admin(관리자)로 패키지를 구분하였다.

  • Controller
    클라이언트 측에서 요청을 받아 Service에 전달하고, 결과를 반환하는 레이어
  • Service
    비즈니스 로직을 수행하고, 필요시 Mapper를 호출하는 레이어
  • Mapper
    DB에 직접 접근하는 레이어. CRUD를 수행함.(MyBatis 인터페이스)
  • Domain
    DB 테이블과 매칭되는 순수 데이터 모델(Entity)
  • DTO
    Request(요청)과 Response(응답)을 포장하는 객체
  • Exception
    예외 클래스와 에러코드를 관리

3. FrontEnd 구조 정의

  • View
    페이지 단위 컴포넌트로, 사용자가 보는 화면
    직접적인 API 요청은 하지 않음
  • Pinia Store
    state(상태), actions(메서드)를 관리
    View에서 action을 호출, 내부에서 Service를 호출
    데이터를 fetch하고, 상태로 저장하는 구조
  • Service
    API 요청만 담당함
    실제 axios를 이용하여 BackEnd와 통신
    axios를 직접 다루는 부분을 전담

다음 포스팅 부터 실제 구현을 진행할 예정이다.

0개의 댓글