개발 기간: 2023.05.04 ~ 2023.05.11
🎥 시연영상 https://www.youtube.com/watch?v=mGZ9BXAWmiE
- 항해가 66일 남은 날 프로젝트를 시작하였고, 항해의 뒷 모습 이란 생각에 항해 66으로 이름을 지었다.
- 항해66은 항해를 하는 사람들의 익명 게시판이다. Blind를 벤치 마킹 하였다.
- 유저의 아이디의 첫 글자, 주특기, 기수만 공개된다 ex) u***** (Spring) 14기
https://www.notion.so/S-A-afa6ceba07db4022bebde44ccb35807a
![스크린샷 2023-05-11 014246](https://private-user-images.githubusercontent.com/129656095/237544231-b30b6beb-c5e0-4635-b1ab-7bc7847a0d3a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjUzMzQyMTUsIm5iZiI6MTcyNTMzMzkxNSwicGF0aCI6Ii8xMjk2NTYwOTUvMjM3NTQ0MjMxLWIzMGI2YmViLWM1ZTAtNDYzNS1iMWFiLTdiYzc4NDdhMGQzYS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwOTAzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDkwM1QwMzI1MTVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1jN2E5N2RkMTQ4OWY3YzNiZmJkMTIzN2I3OTUwN2YwZjllZDU1MjZmNGNlOTA5NjA4OGRkODYwMjI1MGJhOWFhJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.TDnJamtkNJJy4_S4C4678BGVd5AFCctGoz151sF0khI)
이름 | 역할 |
---|---|
이현규(BE팀장) @OliveLover |
- 댓글 API - 게시글, 댓글 좋아요 API - 서버 배포 - 검색 기능 - DB 연동 |
정성윤 @kanteluv |
- RefreshToken, AccessToken - 유저 API - entity 연관관계 |
김종범 @JayB202 |
-게시글 API - 검색 기능 |
한승희 @seunghee58 |
- 댓글 API - 게시글, 댓글 좋아요 API - 검색 기능 |
FE git hub : https://github.com/HaeJinS2/MiniProject_Hanghae66_FE
-
회원 가입 API
- userId : 크기 4 이상, 10 이하 / 소문자와 숫자만 입력가능, 공백 금지 / 중복 불가
- userName : 크기 10이하, 공백 금지
- password : 크기 8 이상, 15 이하 / 대소문자, 숫자, 특수문자 가능, 공백 금지 -
로그인 / 로그아웃 API
- 로그인 성공 시, Access Token과 Refresh Token을 발급하고 헤더에 토큰을 추가 -
마이페이지 API
- 나의 정보 확인
- 내가 쓴 게시글, 댓글 목록 조회
-
게시글 작성 API
- 카테코리를 선택 후 글을 작성 -
게시글 수정 API
- 내가 작성한 글에 한하여 수정 가능 -
게시글 삭제 API
- 내가 작성한 글에 한하여 삭제 가능 -
게시글 목록 조회 API
- 게시글 목록을 내림차순으로 조회
- 카테고리 별 게시글 조회 -
게시글 상세 조회 API
- 게시글의 내용과 댓글 리스트 -
게시글 좋아요 API
- 게시글에 좋아요 버튼을 눌러 좋아요 표시
- 버튼을 한 번 더 누르면 취소 -
게시글 검색 API
- 키워드를 입력하여 제목+내용, 제목, 내용으로 게시글 조회 -
댓글 작성 API
- 모든 게시글에 댓글 작성 가능 -
댓글 좋아요 API
- 댓글에 좋아요 버튼을 눌러 좋아요 표시 가능
- 버튼을 한 번 더 누르면 취소
그간 항해를 진행하면서 익혀왔던 테이블간의 연관관계를 구성하고 데이터를 가져오는 방법을 개선하고 싶었는데,
서로 바라보고 있는 양방향관계에서는 순환참조가 일어날 수 밖에 없다고 생각
추천하는 방법이 @JsonIgnore, @JsonManagedReference, @JsonBackReference 과 같은 어노테이션을 사용하는 것과
DTO를 이용한 방법이 있었고
어노테이션을 이용한 방법은 정확히 어떻게 순환참조가 되지 않는지 이해가 잘 안되서 DTO를 이용하는 방법으로 CRUD 를 구현
DTO를 각 엔티티의 순환참조가 생길만한 연관관계를 지정하는 멤버를 제외하고 본따서 만듦
게시글과 댓글이 서로 양방향 관계라고 했을 때, 게시글은 댓글 멤버를, 댓글은 게시글 멤버를 뺀 DTO를 구성하고, 각각의 DTO를 더해서 응답 DTO를 만들어내는 로직을 구성
이렇게 되면 순환참조나 N+1 같은 문제를 피할 수 있게 되지만 구현하다 보니 원하는 출력값이 달라질 때마다 응답 DTO가 계속 추가됨
프로젝트를 끝내면서 생각해보니 안전하지만 코드가 길어지고 클래스가 늘어나는 DTO를 이용하는 방법도 최선이 아니겠다 생각을 함