HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
♥️
2기 최종 프로젝트 팀별 공간
/
[팀 09] 오프와 에프
[팀 09] 오프와 에프
/
댓글, 대댓글 구현하기

댓글, 대댓글 구현하기

작성일시
Aug 3, 2022 04:48 AM
최종 편집일시
Aug 7, 2022 05:14 AM
회의 유형
작성자
참석자
대댓글 DB 스키마 설계
안녕하세요. 게시판 개발 중 대댓글(댓글의 댓글) 기능을 구현하려고 합니다.아무리 생각해보고 검색해봐도 헷갈리네요.도움 부탁드리려고 합니다. 우선 제가 찾아본 결과로 DB 를 설계한 것으로 질문 드리자면, - 댓글 테이블 - cmt_no: 댓글 No (pk) content: 내용 parent: parent 댓글 No depth: 1-댓글, 2-대댓글 seq: 댓글 순서 으로 설계하였고, ㄱ. 일반 댓글은 parent 값을 가지지 않습니다.
대댓글 DB 스키마 설계
https://hashcode.co.kr/questions/3480/%EB%8C%80%EB%8C%93%EA%B8%80-db-%EC%8A%A4%ED%82%A4%EB%A7%88-%EC%84%A4%EA%B3%84
대댓글 DB 스키마 설계
상기의 글에서 depth 는 필요 없다고 함.
 
NumberExpression<Long> otherwise = new CaseBuilder().when(courseComment.rootCommentId.isNull()) .then(courseComment.id) .otherwise(courseComment.rootCommentId);
 
queryDsl의 CaseBuilder를 사용하여 부모 아이디가 null인(즉, 루트 코멘트일 경우) 코멘트 아이디를, 부모 아이디가 null이 아닐경우(즉, 대댓글일 경우) 부모 댓글의 아이디로 순서정렬이 되게 했고
 
List<CourseComment> commentList = jpaQueryFactory.select(courseComment) .from(courseComment) .leftJoin(courseComment.course, QCourse.course).fetchJoin() .where(QCourse.course.id.eq(courseId)) .orderBy(otherwise.asc()) //요기 .orderBy(courseComment.seq.asc()) //그 다음 시퀀스대로 정렬 .offset(pageable.getOffset()) .limit(pageable.getPageSize()+ 1) .fetch();
 
상기의 방식으로 작성하니 잘 되었음.
우리는 작성 순서대로 댓글의 아이디가 증가하므로 이러한 방식을 사용했고, 다른 방법이나 타입으로 아이디가 생성될 경우에는 다른 방법을 사용해야함.
 
추가 - seq말고 createAt 으로 해도 동작이 잘 되며 동시성 이슈도 어느정도 해결될것 같음
= seq 필요없어서 제거함.