본문 바로가기
프로그래밍/Project

[Spring] ToyProject 2단계(1) - 시작하기

by 코딩중독 2024. 1. 28.

목차

    패스트캠퍼스 : 백엔드 개발 부트캠프

    ToyProject 2

    • 1단계, 2단계, 3단계로 진행
    • 최종 구현 목표는 '여행과 여정을 기록하고 관리하는 SNS 서비스

    2단계

    • 달성목표 : Spring Legacy 기반 프로젝트, DB 설계, DB 트랜잭션, RESTful API 설계

    [프로젝트 정의]

    1. 회원은 여러 여행 기록을 저장할 수 있습니다.
    2. 여행은 여러 여정을 가질 수 있습니다.
      1. 여정 정보는 이동정보, 체류정보, 숙박정보 등의 종류를 포함할 수 있습니다.
    3. 회원이 가진 전체 여행 리스트를 조회할 수 있습니다.
      1. 전체 여행 리스트는 여행 정보와 각 여행에 포함된 여정 이름들을 같이 보여줍니다.
      2. 여행의 상세 여정 정보는 개별 여행 조회를 통해 수행합니다.
    4. 회원은 개별 여행 정보를 조회할 수 있습니다.
      1. 특정 여행에 대한 모든 여정 리스트를 보여줍니다.
      2. 여정의 상세 정보를 모두 포함합니다.
    5. 여행 정보 및 여행 정보의 여정 목록을 데이터베이스에 저장합니다.
    6. 일정 정보 중 일시에 대한 공통 유틸리티 클래스로 생성하여 활용합니다. 일정 정보에 위치 정보를 추가하고, 일정 조회 시 함께 출력하도록 구현합니다.
    7. 모든 데이터는 JSON으로 반환합니다.

    [프로젝트 요구사항]

    1. 개별 여행은 여러 여정 정보로 구성됩니다. (여행 : 여정 = 1 : n)
    2. 여행 정보에는 다음 정보가 필수 항목으로 포함되어야 합니다.
    3. [여행]의 이름, 일정(출발 날짜, 도착 날짜), 국내/외 여부
    4. 여정 정보에는 다음 항목으로 분류됩니다.
      1. 이동(이동 수단, 출발지, 도착지, 출발 일시, 도착 일시)
      2. 숙박(숙소명, 체크인 일시, 체크아웃 일시)
      3. 체류(장소명, 도착 일시, 출발 일시)

    [개발환경]

    • Language : Java
    • Build system : Gradle-Groovy
    • JDK : 17.0.2
    • Server : Apache Tomcat 9.0.82
    • DataBase : MySQL

    [데이터베이스 설계]

    user
    컬럼명 데이터 타입 조건 설명 자바 변수명 자바 타입
    id BIGINT(32) PK, AI 사용자 아이디 id Long
    name VARCHAR(20) NOT NULL 사용자 이름 name String
    email VARCHAR(50) NOT NULL 사용자 이메일 email String
    password VARCHAR(20) NOT NULL 사용자 비밀번호 password String
    registered_at DATETIME NOT NULL 등록일 registeredAt LocalDateTime

     

    [API 설계]

    user (/api/user)
      Method URL return page
    사용자 전체 조회 GET / List<UserResponse>  
    사용자 등록 POST /register    
    사용자 상세 조회 GET /{userId}