지난 스프링 프로젝트인 ToDo List가 잘 마무리 되었고 다음 프로젝트를 진행하고자합니다.
ToDo List 프로젝트는 스프링과 JPA를 기반으로 단순한 예제의 CRUD 기능을 구현하고 프레임워크를 체험하고 익숙해지는 것이 목표였습니다.
스프링이 무엇인지 감을 확실히 잡았으니 좀 더(아주 조금..) 복잡한 연관관계를 구성하고 CRUD와 동적 쿼리 기반 조회 로직을 제작해 보겠습니다.
시작일 : 2022.12.20
IDE : IntelliJ | OS : Window 10 | SpringBoot 2.7.6 | Java 11 | Gradle : 7.6
Member
[회원가입]
이름, 아이디, 비밀번호를 입력받아 로그인. 아이디는 중복이 불가능.
[로그인]
스프링 시큐리티를 이용하여 로그인 및 인증, 인가 구현
[회원 탈퇴]
회원 탈퇴 시 작성한 게시글, 댓글, 좋아요 모두 삭제.
Post
[게시글 생성, 수정, 삭제]
제목과 내용을 입력받아 게시글 생성. 수정 및 삭제는 본인이 작성한 게시글만 가능.
게시글 삭제 시 게시글에 달린 댓글, 좋아요 같이 삭제.
[게시글 리스트 조회]
게시글 리스트 조회 시 작성자, 좋아요 수, 댓글 수를 포함하여 조회.
한 번 조회 시 10개를 조회하며 페이지 이동이 가능해야 함.
[게시글 검색]
게시글 제목, 내용, 작성자를 기반으로 게시글 검색.
페이지 이동 시 검색 데이터 유지.
Comment
[댓글 생성, 수정, 삭제]
게시글에 로그인 회원 누구나 댓글 생성 가능. 본인이 작성한 댓글만 수정, 삭제 가능.
[댓글 조회]
게시글 조회 시 해당 게시글에 달린 댓글 리스트 함께 조회
Heart
[좋아요 생성, 삭제]
게시글에 좋아요를 남길 수 있으며 한 회원이 게시글당 1개의 좋아요를 남길 수 있고 지울 수 있음.
ERD
실제로 사용할 커뮤니티 서비스를 개발하는 것이 아니기 때문에 텍스트를 입력 받는 컬럼을 모두 varchar(255)로 설정했습니다.
// 추가 : 각 테이블에 createDate, lastModifiedDate (timestamp) 컬럼 추가
스프링 부트에선 기본적으론 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를 개발하겠습니다.