Problem

현재 진행하고 있는 게시판 만들기 프로젝트에서 특정 게시글을 불러올 때, 댓글도 같이 불러 올 수 있도록 구현해야했는데, 게시글 작성도 잘 되고 댓글도 작성이 잘 되지만, 서로 연동이 되지 않는 문제가 있었다

What I tried

다른 분들에게 물어보고 구글링을 하루 종일 한것 같다.
가장 먼저 Comment(댓글) 서비스 부분에서 보드에 제대로 저장이 되지 않았다고 생각을 했다. 그래서 debugging을 해보았지만, 확인하는 방법을 잘 몰랐던 터라, Comment Service에서 문제가 있다고 생각하고 거의 반나절을 그 부분에 매달려있었다. 하지만 그러다 문득 Board Service의 getBoard 메소드에 문제가 있는 것은 아닐까 하고 포커스를 바꿔 해당 부분에 집중을 하였다.

What was Wrong?

기존 코드는 아래와 같았다.

public BoardResponseDto getBoard(Long id) {
        return new BoardResponseDto(checkBoard(id));
    }

지금 보면 너무나 당연히 보이는데, 왜 문제가 있었을 당시에는 안보였는지...
당연히 해당 getBoard 메소드는 단순하게 id만 체크하여 게시글을 가져오는 방식이였다.

What I learned

기나긴 삽질의 여정 끝에 아래와 같은 코드를 완성하였고, 특정 게시글을 불러올 때, 게시글에 연동이 되어있는 댓글들을 불러올 수 있었다.

    public BoardResponseDto getBoard(Long id) {
        Board board = boardRepository.findById(id).orElseThrow(() -> new IllegalArgumentException("해당 게시글을 찾을 수 없습니다."));

        List<CommentResponseDto> comments = new ArrayList<>();
        for (Comment comment : board.getComment()) {
            comments.add(new CommentResponseDto(comment));
        }

        return new BoardResponseDto(board, comments);
    }

간략하게 설명하자면, 당연히 getBoard를 하면서 Comment를 가지고 왔어야 했다. 문제를 파악하고 어떻게 해야하는지 이해는 하고 있었지만, 해당 코드를 구현하는대도 오래 걸린것 같다. CommentResponseDto에 담겨있는 댓글들을 향상된 for문을 사용하여 가지고 오고 .add하는 방식을 사용하여 댓글들을 불러 올 수 있었다. 정말 어떻게든 해결하고 자겠다는 의지로 몰두해있다 보니 새벽 4시인지도 몰랐다. 굉장히 뿌듯했다.

profile
Think out of the Box

0개의 댓글