어제 팀 프로젝트를 하면서 조원들과 병합했던 과정들을 거쳤었다.
오늘은 PostMan을 활용하여 테스트 하는 시간을 가져 보았다. 테스트마다 여러가지 오류가 작동 했었는데, 미리미리 병합을 해두길 잘한것 같았다. 회원가입과 비밀번호 수정 시 입력 받은 비밀번호 유효성 검사가 어디서 해야 하는지. 하나의 브랜치가 아직 덜 병합되어 있는점 등등 여러가지 보완해야 할점이 많았었다.
나는 게시물을 다시 되돌아보는 시간을 가지면서 좋아요랑 댓글이 연동이 되어 있지 않은 것을 깨닫고 다시 코드작업에 들어갔다 😓.
코드 작업중 도저히 어떻게 시작을 해야할까 했는데, 댓글과 좋아요는 내가 담당한 역할이 아니라서 코드를 읽으면서 그대로 적용하는 식으로 하였다. 하지만 하는 과정에서, Board에 Like를 컬럼을 주어서 다:1로 할려고 하려니까, 이미 Like, Comment 둘다 구현이 되어 있었던 것이다. 그래서 양방향 방식은 튜터님들이 권장하지 않는다고 하는 점을 깨닫고, 도저히 어떻게 해야하지 하다가 튜터님에게 찾아가서 단방향 방식으로 하는방법을 답변해주셨다.

LikeRepository에 long countByBoard(Long boardId); 를 선언하고, id값을 받아오는 역할을 하였다.
@Getter
@AllArgsConstructor
public class BoardResponseDto {
private final Long id;
private final String title;
private final String nickname;
private final String contents;
private final LocalDateTime createdAt;
private final LocalDateTime updatedAt;
// 좋아요 수
private long likeCounts;
public BoardResponseDto(Long id, String title, String nickname, String contents, LocalDateTime createdAt, LocalDateTime updatedAt) {
this.id = id;
this.title = title;
this.nickname = nickname;
this.contents = contents;
this.createdAt = createdAt;
this.updatedAt = updatedAt;
}
public static BoardResponseDto from(Board board, long likeCounts) {
return new BoardResponseDto(board.getId(), board.getTitle(), board.getUser().getNickname(), board.getContents(), board.getCreatedAt(), board.getUpdatedAt(), likeCounts);
}
}
Board에 likeCounts 라는 필드를 선언해주고, private final을 하면 무조건 생성자를 가져야 하기 때문에 작성하지 않았으며, 원래 toDto 메소드로 전체조회때 필요했던 값들을 이제 from으로 메소드명을 바꿔주며, likeCounts 필드를 추가하여 BoardResponseDto에 추가해줬다.

이후 board컨트롤러 에서는 변화가 없지만, board서비스에는 큰 변화가 있다. 아까 LikeRepository에서 만들었던 메소드를 이용하여 전체조회는 매핑을이용하고 boardId를 get을통해 id를 받아오고 페이징 처리가 되어있어서 10개의 데이터가 기본값으로 정렬되어 있으며 , 단건조회는 직접 해당 board객체 id값을 담고 변수에 저장과 likeRepository에 있는 id값을 담고 마지막에 리턴 값으로는 BoradReponseDto에 만들었던 from 메소드를 활용하여 각 변수에 저장된 값에 맞추어 반환하였다. 내일은 댓글 까지 연동해봐야겠다.. 💥💥
마지막으로 밤새 작업하는 나의 모습,,, 내일도 화이팅 . . . .

'[내일배움캠프-Sparta] > Spring 6기' 카테고리의 다른 글
| TIL 38 [ Spring 기초 프로젝트 ( Day 5 ) - 마무리 작업 ( ppt, 대본, ERD/API명세서 리뉴얼) ] (0) | 2025.04.11 |
|---|---|
| TIL 37 [ Spring 기초 프로젝트 ( Day 4 ) - 구현 ( 게시판 댓글 기능 연동 ), 스탠다드반 ( JPA 성능 최적화 ) ] (0) | 2025.04.10 |
| TIL 35 [ Spring 기초 프로젝트 ( Day 2 ) - 구현 (게시판 페이징 작업, 정렬), 깃 기능별 병합 ] (0) | 2025.04.08 |
| TIL 34 [ Spring 기초 프로젝트 ( Day 1 ) - 설계( ERD, API, 와이어프레임 ) ] (0) | 2025.04.07 |
| TIL 33 [ 과제 끝 + 스탠다드반 ( 영속성 컨텍스트 ) ] (0) | 2025.04.04 |