GDSC Kookmin 22 - 23 Backend Study
12/20 GDSC 백엔드 스터디 정리
달리는 꿈나무
2022. 12. 25. 15:08
목차
1. 백엔드 과제 요구사항
이번 주는 백엔드 스터디에서 과제를 주었다.
가상의 기획자가 존재한다는 가정하에 기능 요구 사항이 주어지고 이에 따른 데이터베이스 구성과 엔티티 형성을 생각해보자
백엔드 과제 요구 사항
기능 요구 사항
주어진 주제 -> 페이스북
유저
- 유저는 회원가입, 로그인을 통해 가입할 수 있습니다. (필요한 값: email, nickname)
- (도전) 회원가입과 로그인 시 JWT와 Session 중 하나를 선택할 수 있습니다.
글
- 유저는 게시글을 올릴 수 있습니다. (필요한 값: 게시글 제목, 내용)
- 유저는 게시글을 수정할 수 있습니다.
- 유저는 게시글을 삭제할 수 있습니다.
유저
- 모든 유저는 모든 게시글에 좋아요를 남길 수 있습니다.
- 모든 유저는 게시들에 남긴 좋아요를 취소할 수 있습니다.
댓글
- 모든 유저를 게시글에 댓글을 남길 수 있습니다.
- 모든 유저는 게시글에 남긴 댓글을 삭제할 수 있습니다.
글 조회
- 글 조회는 최신순, 좋아요 많은 순으로 정렬할 수 있습니다.
- 메인 화면에서는 모든 글을 최신순으로 보여줄 수 있습니다.(단, 페이징은 하지 않으셔도 됩니다.)
마이페이지 조회
- 유저의 정보들을 볼 수 있습니다.
- 내가 쓴 글을 볼 수 있습니다.
- 닉네임과 이메일을 수정할 수 있습니다. - 중복 불가
구조는 서비스 - 도메인 - 컨트롤러로 주축을 잡는다.
- 계층간 데이터 전달을 DTO을 활용한다.
- JPA 사용 시 옵셔널을 사용하여 엔티티를 리턴한다.
- 도메인 패키징을 엔티티 별로 한다.
- 모든 에러는 Illegalargumentexception으로 처리한다.
- 필요한 dependency는 implementation을 한다.
현재까지 구현
4개의 기본적인 테이블 구현은 끝이 났다. 하지만 아직 쿼리문을 날리지 않아 물리적 스키마가 존재하지 않는다.
각 테이블마다 컨트롤러 - 서비스 - 도메인(JPA레포지토리) 형성은 끝이 났다.
다만 조건에 있는 비즈니스 로직 구현과 로그인 구현이 미흡하다.
이번에는 쿠키와 세션을 통해 로그인을 구현해 보려한다. 전 프로젝트에서는 스프링 시큐리티를 사용했다.