1 ) 프로젝트 진행도
피드(feed) CRUD피드 생성피드 조회단건 조회전체 조회
피드 수정피드 삭제(2일차)
- 친구 관리 기능
- 팔로우 기능
- 팔로워 목록 조회
- 팔로잉 목록 조회
- 언팔로우
- 팔로잉의 게시글 조회
- 생성순
- 업그레이드 뉴스피드 기능
- 전체 피드 수정순으로 조회
- 좋아요 순으로 조회
- 날짜별 기간 검색 기능
- 뉴스피드 CRUD 기능구현
- 게시물 작성
- 게시물 조회 (단건, 전체)
- 게시물 수정 (조건 확인)
- 게시물 삭제 (조건 확인)
- 협업 프로젝트 진행을 하며 느낀 점.
- 서로 역할 분담을 하였어도 필요한 클래스와 필드들이 있기에 누군가는 작업이 멈추는 상황 발생.
- 역할 분담을 잘 하였어도 이 문제는 완벽하게 해결되지 않을 것 이라고 생각.
- 뉴스피드 CRUD 기능 구현
- 뉴스페드 조회 기능 Pageable 사용
- 문제 발생
- 페이징 조회를 하니 Join했던 User 데이터 또한 같이 조회.
- User에는 Password가 있기에 같이 조회되면 안됌.
- 문제 해결책
- 페이징 조회할 시 Feed 필드에서 User 데이터를 제외한 나머지 필드들만 선택하여 조회하기
- 시도 했던 방법 .1
return feedRepository.findAll(pageable).getContent().stream().map(FeedResponseDto::feedDto).toList();
- 여기선 한 줄 밖에 없지만 리턴 타입이 List<Feed>라 return 실패.
- 반환 타입과 리턴 타입이 맞지 않아 에러 발생.
- 다른 방법을 몰색하려고 했으나 stream()에 대한 이해도 부족.
- 시도 했던 방법 .2
- 튜터님의 도움을 받아 새로운 방식으로 접근.
public List<FeedResponseDto> findFeedByPageRequest(Pageable pageable) {
List<FeedResponseDto> feedResponseDtoList = new ArrayList<>();
Page<Feed> feedPage = feedRepository.findAll(pageable);
List<Feed> feedList = feedPage.getContent();
// Feed에서 User 객체를 제외하고 나머지 필드들만 불러와서 반환.
for (Feed feed : feedList) {
feed.setUser(null)
);
feedResponseDtoList.add(feedResponseDto);
}
return feedResponseDtoList;
}
- feed Entity에 User을 setUser 메서드를 만든 후 메서드에 null 값을 집어넣은 뒤 새로 만든 리스트에 feedResponseDto를 넣어주면 User : null 로 나오며 데이터는 지켜주지만 조회 시 User : null 이라고 나오는 것 또한 좋지 않다.
- 시도 했던 방법 .3
public List<FeedResponseDto> findFeedByPageRequest(Pageable pageable) {
List<FeedResponseDto> feedResponseDtoList = new ArrayList<>();
Page<Feed> feedPage = feedRepository.findAll(pageable);
List<Feed> feedList = feedPage.getContent();
// Feed에서 User 객체를 제외하고 나머지 필드들만 불러와서 반환.
for (Feed feed : feedList) {
//FeedResponseDto에 Feed 필드를 넣는다.
FeedResponseDto feedResponseDto = new FeedResponseDto(
feed.getId(),
feed.getUser().getNickname(),
feed.getTitle(),
feed.getDetail(),
feed.getCreatedAt(),
feed.getUpdatedAt()
);
feedResponseDtoList.add(feedResponseDto);
}
return feedResponseDtoList;
}
- 새로운 feedResponseDto를 만들어 feed의 필요한 필드들만 get으로 가져와 데이터를 집어넣은 뒤 add로 List에 데이터를 넣어준다.
- 결과는 매우 성공적.
- 본 결과에 도달하기까지 튜터님의 페이징 설명과 코딩 공부법과 여러 팁들을 알려주셨다.
- 시간이 걸리더라고 하나씩 뜯어가며 확인할 것
- 내가 구현하고자 하는 기능, 목표를 주석으로 써놓고 계속 생각할 것
- 코드를 간략화 하는 것은 내가 먼저 작성한 코드를 100% 이해한 다음에 할 것
- 일단 어떠한 방식으로든 목표를 달성할 것
'TIL > Project' 카테고리의 다른 글
[KPT 회고록] (project : todo-log) (0) | 2024.11.25 |
---|---|
TIL 2024-11-21 (todo-log 3일차) (0) | 2024.11.21 |
TIL 2024-11-19 (todo-log) (1) | 2024.11.19 |
Trouble Shooting ( Calender_JPA) (0) | 2024.11.15 |
Trouble Shooting ( 일정 관리 앱) (0) | 2024.11.08 |