Spring Example: Community #0 기획

함형주·2022년 12월 21일
0

지난 스프링 프로젝트인 ToDo List가 잘 마무리 되었고 다음 프로젝트를 진행하고자합니다.

ToDo List 프로젝트는 스프링과 JPA를 기반으로 단순한 예제의 CRUD 기능을 구현하고 프레임워크를 체험하고 익숙해지는 것이 목표였습니다.

스프링이 무엇인지 감을 확실히 잡았으니 좀 더(아주 조금..) 복잡한 연관관계를 구성하고 CRUD와 동적 쿼리 기반 조회 로직을 제작해 보겠습니다.
시작일 : 2022.12.20

1. 개요

1) 프로젝트 환경

IDE : IntelliJ | OS : Window 10 | SpringBoot 2.7.6 | Java 11 | Gradle : 7.6


2) 라이브러리

  • Spring Web
  • Spring Data Jpa
  • H2 Database
  • Thymeleaf
  • Lombok
  • Spring Security

  • Querydsl 5.0.0

2. 요구사항

Member

[회원가입]

이름, 아이디, 비밀번호를 입력받아 로그인. 아이디는 중복이 불가능.

[로그인]

스프링 시큐리티를 이용하여 로그인 및 인증, 인가 구현

[회원 탈퇴]

회원 탈퇴 시 작성한 게시글, 댓글, 좋아요 모두 삭제.

Post

[게시글 생성, 수정, 삭제]

제목과 내용을 입력받아 게시글 생성. 수정 및 삭제는 본인이 작성한 게시글만 가능.
게시글 삭제 시 게시글에 달린 댓글, 좋아요 같이 삭제.

[게시글 리스트 조회]

게시글 리스트 조회 시 작성자, 좋아요 수, 댓글 수를 포함하여 조회.
한 번 조회 시 10개를 조회하며 페이지 이동이 가능해야 함.

[게시글 검색]

게시글 제목, 내용, 작성자를 기반으로 게시글 검색.
페이지 이동 시 검색 데이터 유지.

Comment

[댓글 생성, 수정, 삭제]

게시글에 로그인 회원 누구나 댓글 생성 가능. 본인이 작성한 댓글만 수정, 삭제 가능.

[댓글 조회]

게시글 조회 시 해당 게시글에 달린 댓글 리스트 함께 조회

Heart

[좋아요 생성, 삭제]

게시글에 좋아요를 남길 수 있으며 한 회원이 게시글당 1개의 좋아요를 남길 수 있고 지울 수 있음.

3. DB 설계

ERD

실제로 사용할 커뮤니티 서비스를 개발하는 것이 아니기 때문에 텍스트를 입력 받는 컬럼을 모두 varchar(255)로 설정했습니다.

// 추가 : 각 테이블에 createDate, lastModifiedDate (timestamp) 컬럼 추가

4. 기본 설정

스프링 부트에선 기본적으론 application.properties에서 스프링 관련 사항을 설정할 수 있습니다.

yml 형식도 지원하므로 저는 기존의 application.properties을 삭제하고 application.yml을 생성해주겠습니다.

application.yml

spring:
  datasource:
    url: jdbc:h2:tcp://..... # db 경로
    username: sa
    password:
    driver-class-name: org.h2.Driver

  jpa:
    hibernate:
      ddl-auto: create # 개발단계에서만 create 사용

    properties:
      hibernate:
        format_sql: true
        default_batch_fetch_size: 100

  mvc:
    hiddenmethod:
      filter:
        enabled: true

logging.level:
  org.hibernate.SQL: debug

server:
  servlet:
    session:
      tracking-modes: cookie

다음으로

본격적으로 개발에 들어가겠습니다. 개발 순서는 Entity -> Controller -> Service -> Repository -> view 이며 기본적인 기능 개발이 완료된 후 REST API를 개발하겠습니다.

github , 배포 URL (첫 접속 시 로딩이 걸릴 수 있습니다.)

profile
평범한 대학생의 공부 일기?

0개의 댓글