JPA
-
대댓글 기능 구현하기Diary/우아한테크코스 2022. 10. 4. 22:06
속닥속닥 프로젝트는 댓글 기능이 존재하는 상황이었다. 그런데 운영중 사용자들의 피드백으로 대댓글 기능을 도입해달라는 피드백이 많았고, 우리 팀 또한 대댓글을 도입하면 재미있을 거라고 생각해 기능 개발을 하게 되었다! 요구 사항은 다음과 같다. 댓글에 대댓글을 작성할 수 있다. 댓글이 삭제 되더라도 대댓글은 남아 있어야 한다. 댓글이 삭제된 상태에서, 그 댓글에 달린 대댓글이 모두 삭제되면 댓글 또한 완전히 삭제되어야 한다. 익명으로 작성하는 댓글의 경우 임의의 닉네임(ex: 짜증나는 리액트)으로 보여주고, 한 번 댓글을 작성해 익명 닉네임을 할당 받은 경우 한 게시글에서는 같은 익명 닉네임을 사용하게 되는데, 이를 대댓글에도 적용한다. 먼저, 대댓글 객체 설계에 대한 고민부터 시작했다. 댓글 객체의 필드..
-
findBy*** VS findBy***Id카테고리 없음 2022. 10. 4. 21:44
속닥속닥 프로젝트에서는 Spring Data Jpa 를 사용하고 있다. 추상화된 api 를 쓰다 보니, 예상치 못한 부분에서 성능 이슈가 발생하기도 하는데, 이번에 댓글 기능 리팩터링을 하며 겪은 문제를 써보고자 한다. 문제 상황 속닥속닥에는 댓글 기능이 있는데, 게시글 하나에 댓글 여러개가 속할 수 있기 때문에 Many To One 으로 연관관계를 맺고 있다. 다시 말해, Comment 테이블에서 post_id 를 가지고 있는 것이다. 이 상황에서 CommentRepository 에서 findAllByPostId 메서드를 호출하면, 당연히 아래와 같은 쿼리가 나갈줄 알았다. select * from comment as c where c.post_id = ? 그런데... 실제로 실행을 해보고 나니 아래와..