TIL 36 [ Spring 기초 프로젝트 ( Day 3 ) - 구현 ( 게시판 - 좋아요 기능연동 ) ]

2025. 4. 9. 23:47·[내일배움캠프-Sparta]/Spring 6기
반응형

어제 팀 프로젝트를 하면서 조원들과 병합했던 과정들을 거쳤었다.

오늘은 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
'[내일배움캠프-Sparta]/Spring 6기' 카테고리의 다른 글
  • TIL 38 [ Spring 기초 프로젝트 ( Day 5 ) - 마무리 작업 ( ppt, 대본, ERD/API명세서 리뉴얼) ]
  • TIL 37 [ Spring 기초 프로젝트 ( Day 4 ) - 구현 ( 게시판 댓글 기능 연동 ), 스탠다드반 ( JPA 성능 최적화 ) ]
  • TIL 35 [ Spring 기초 프로젝트 ( Day 2 ) - 구현 (게시판 페이징 작업, 정렬), 깃 기능별 병합 ]
  • TIL 34 [ Spring 기초 프로젝트 ( Day 1 ) - 설계( ERD, API, 와이어프레임 ) ]
dimenshun
dimenshun
한 소년의 개발 일기
    반응형
  • dimenshun
    Dev Life Notes
    dimenshun
  • 전체
    오늘
    어제
    • 분류 전체보기 (268)
      • CS (23)
        • 자료구조 (0)
        • 알고리즘 (0)
        • 컴퓨터 구조 (8)
        • 네트워크 (6)
        • 운영체제 (3)
        • DB ( + SQLD ) (5)
        • SW공학 (1)
      • 프로그래밍 (3)
        • Java (0)
        • Spring (0)
        • HTML,CSS (3)
        • JavaScript (0)
      • 개발 툴 (7)
        • Git(버전관리) (1)
        • Docker (3)
        • AWS (2)
        • JSP (1)
      • 코딩테스트(Algorithm) (125)
        • 백준 (6)
        • 프로그래머스 (119)
      • [내일배움캠프-Sparta] (110)
        • Spring 6기 (106)
        • KPT 회고 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    It
    컴퓨터구조
    db
    트랜잭션
    SQLD
    Testcode
    개발자
    알고리즘
    백엔드
    cs
    웹
    Python
    네트워크
    Java
    Til
    network
    SQL
    KPT
    spring
    세션
    메모리
    운영체제
    배포
    CPU
    코딩테스트
    docker
    OS
    web
    내일배움캠프
    AWS
  • hELLO· Designed By정상우.v4.10.3
dimenshun
TIL 36 [ Spring 기초 프로젝트 ( Day 3 ) - 구현 ( 게시판 - 좋아요 기능연동 ) ]
상단으로

티스토리툴바