인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

김규혁님의 프로필 이미지

작성한 질문수

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

댓글 최대 2 depth - CUD API 구현

comment에서 findParent 질문드립니다.

해결된 질문

작성

·

108

·

수정됨

0

  • 학습 관련 질문을 최대한 상세히 남겨주세요!

  • 고민 과정도 같이 나열해주셔도 좋습니다.

  • 먼저 유사한 질문이 있었는지 검색해보세요.

  • 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

findParent 메서드에서 return문을 보면 getDeleted로 부모 댓글이 삭제됐는지 여부를 확인하는 코드가 있는데, 부모가 삭제됐을때를 체크하는 이유가 무엇인가요?

 

부모 댓글이 삭제됐을 때, 더이상 하위 댓글을 달 수 없도록 하기 위함인가요?

 

하위 댓글이 남아있는 이상 부모 댓글은 "삭제됐습니다"와 같이 표시만 할 뿐이고 db에서 삭제되지는 않더라도 deleted=true로 바뀌어 있을텐데 만약 부모 댓글이 삭제됐을때 하위 댓글을 추가로 달 수 없는게 아니라, 계속해서 하위 댓글을 달 수 있다면 부모 댓글이 삭제된 상태라 하더라도 create 메서드를 실행할때 부모 댓글의 id를 넣어도 문제 없지 않은가라는 의문이 들어서요

 

create 메서드를 보면 parent가 null이라면 부모댓글이니까 null을 넣고 하위 댓글이라면 findparent에서 찾은 부모 댓글의 id를 넣어주는 코드인데, 부모 댓글이 deleted=true로 바꼈다 할지라도 DB 자체에서 완전히 삭제되지 않은 이상 즉, 하위 댓글이 여전히 남아있는 상황이라면 deleted=true로 바뀐 부모 댓글의 id를 넣어줘도 되지 않나?라는 생각이 들어서 질문드립니다!

답변 2

0

쿠케님의 프로필 이미지
쿠케
지식공유자

규혁님, 안녕하세요!

 

말씀하신대로 부모가 삭제 되었을 때 더이상 하위 댓글을 작성할 수 없다는 정책일 뿐입니다.

삭제되어도 하위 댓글을 작성할 수 있도록 하고 싶으면, 그렇게 하셔도 됩니다!

기술적인 제약이 있다기 보단, 서비스 정책에 대한 내용으로 생각해 주시면 될 것 같네요!

김규혁님의 프로필 이미지
김규혁
질문자

답변 감사합니다!

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 김규혁님.

질문해주신 내용은 데이터베이스 내의 댓글 시스템 설계와 관련된 부분입니다. 특히, 부모 댓글이 삭제된 경우에도 하위 댓글을 추가할 수 있는지, 그렇지 않은지에 대한 고민이 포함되어 있는 것 같습니다.

부모 댓글 삭제 관련 고려사항

  1. 부모 댓글의 상태:

    • 보통 댓글 시스템에서는 부모 댓글이 삭제되면 “삭제된 댓글입니다” 라고 표시됩니다. 실제 데이터베이스에서는 deleted=true 로 상태만 바꾸고 실제 삭제는 하지 않는 것이 일반적입니다. 이는 기존의 댓글 구조를 깨뜨리지 않고 유지하기 위함입니다.
  2. 하위 댓글 추가 가능 여부:

    • 부모 댓글이 삭제된 경우 하위 댓글을 추가할 수 있는지 여부는 비즈니스 로직에 따라 결정됩니다.
      • 삭제 후 댓글 불가: 부모 댓글이 삭제되어 작성 불가능한 경우는 댓글 구조의 일관성을 유지하고자 하는 경우가 많습니다.
      • 삭제 후 댓글 가능: 여전히 하위 댓글을 허용하는 경우도 있습니다. 이 경우는 토론의 맥락을 잃지 않게 하려는 목적이 있을 수 있습니다.
  3. 기술적 구현:

    • findParent 메서드에서 getDeleted를 확인하는 이유는 부모 댓글의 상태에 따라 하위 처리 로직이 달라지기 때문일 수 있습니다. 예를 들어, 부모가 삭제된 상태라면 특정 기능이 제한될 수 있습니다 (예: 새로운 하위 댓글 작성 불가).

김규혁님의 설명대로, 비즈니스 로직상 하위 댓글을 계속 허용한다면 부모 댓글의 삭제 여부는 하위 댓글 작성에 큰 문제가 되지 않을 수 있습니다. 하지만 이 경우 관리 상의 이슈나 사용자 혼란을 줄이기 위한 명백한 정책이 필요합니다.

아래 관련 주제를 다루는 유사한 질문이 있습니다. 더 많은 정보를 얻고자 한다면 참고하십시오:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.