Spring 심화 프로젝트 - 대댓글

mil nil·2023년 1월 6일
0

대댓글 기능 구현

진행 사항

블로그들에서 본 내용을 따라해보았지만 지금껏 만들어온 코드와 다른 부분이 너무 많아 적용이 어려웠다. 기본적인 사고 방식만 따라가고 내 방식대로 코드를 짜보자.

  • 대댓글은 댓글과 같은 CommnetRepository에서 관리된다. -> 따라서 댓글과 똑같다.

  • 대신 대댓글은 해당하는 댓글과 참조 관계에 있어야 한다.
    -> 댓글은 부모, 대댓글은 자식으로 관계를 맺어야 한다.

  • 대댓글의 경우 해당하는 댓글의 아이디와 게시글의 아이디 확인을 진행한다.

트러블 슈팅

  • 대댓글에 게시글 아이디를 참조하게 되면 게시글의 댓글과 대댓글에 중복으로 대댓글이 조회되는 문제 발생
    -> 대댓글은 댓글 아래에만 생성이 되어야하므로 게시글과의 연관을 끊는 방법을 선택

  • 그러자 게시글 아이디 확인 과정에서 문제 발생
    -> 게시글 아이디를 확인하는 과정을 빼고 진행하는 것으로 진행
    -> 문제는 해결되었으나 게시글 아이디 확인을하는 로직이 빠져 예외 처리에 문제가 생기지는 않을지 고민이 된다.
    -> 일단 구동되는 것이 우선이니 추후에 더 고민해보기로

  • 위 문제를 해결하기 위해 Comment에 PostId를 추가해보기로 했다
    -> Post와의 연관관계에서 name을 Post_id로 사용하고 있어 Long postId는 사용이 불가능 했다.
    -> 대신 Long mainPostId로 해보기로 한다.

  • 대댓글인 아닌 댓글 쪽에는 mainPostId를 추가해주지 않아 발생한 문제였다.

-> 댓글 쪽에도 mianPostId를 입력해주자 해결!


  • 그 외 문제점

  • 동일한 댓글이 중복 조회되는 문제 발생
    -> 변경 과정에서 대댓글의 post 자리에 null 대신 다시 post를 넣어서 진행한 경우가 있었는데 이렇게 되면 연관관계 때문에 중복 조회가 된다.

-> 다시 null을 넣어서 해결했다.


리뷰

  • 한가지 아쉬운 점이 있다. 처음 API를 설정할 때 댓글과 대댓글의 API를 다르게 설정한다면 위와 같은 문제도 발생하지 않을 뿐 아니라 유지보수 면에서도 훨씬 쉬웠을 것이라고 생각된다. 객체지향적인 관점에서 접근하지 못한 것이 아쉽다.

  • 만약 프론트엔드와 협업한다면 계층 정보도 추가하여 보내줄 수 있다면 프론트엔드 개발에서 더 보여주기 좋을 것으로 생각된다.

profile
자바 배우는 사람

0개의 댓글