현재 프로필에서 마우스를 올리면 좋아요 카운트가 뜨는것을 구현하고자 한다.
우리는 이미 포토 게시판 구현하기에서 카운트를 구현했기 때문에 가져오기만 하면 된다.
@GetMapping("user/{pageUserId}")
public String profile(@PathVariable int pageUserId, Model model,@AuthenticationPrincipal PrincipalDetails principalDetails){
UserProfileDto dto = userService.회원프로필(pageUserId,principalDetails.getUser().getId());
model.addAttribute("dto", dto);
return "user/profile";
}
우리가 아주 전에 구현했던 프로필을 보면 우리는 Dto 를 구현해서 세션에 담아서 가져갔다.
(코드 수정된건 없음)
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Data
public class UserProfileDto {
private boolean pageOwnerState;
private User user;
private int imageCount;
private boolean subscribeState;
private int subscribeCount;
}
그리고 Dto 에 보면 User 타입의 user 가 있다.
(여기도 코드 변한건 없음)
즉 말하고싶은건
User 도메인에 들어가보면 이곳 역시 양방향 맵핑으로 인해 Image를 가지고있고 Image에는 ImageCount
를 가지고있다. 즉 우리는 데이터를 그냥 Dto 타고-> 타고-> 타고-> 쭉쭉 들어가서 사용하면 된다는거다.
<div class="img-box">
<a href=""> <img src="/upload/${image.postImageUrl}"/>
</a>
<div class="comment">
<a href="#" class=""> <i class="fas fa-heart"></i><span>${image.likeCount}</span>
</a>
</div>
</div>
그래서 profile.jsp 에서 프로필 페이지 좋아요 갯수를 구하기 위해 {image.likeCount} 를 넣어보았다. 하지만 값은 0 으로뜬다.
이런 이유는 우리가 likeCount를 따로 DB에 저장하지않았기 때문인데.
(이전에 @Transient 를 사용했고, service 단에서 만들어서 데이터를 보냈었다.)
DB로 꺼내오는 방법이 아닌 service단에서 image -> getLikes().size를 해서 좋아요 갯수를 가져와야 한다.
@Transactional(readOnly = true)
public UserProfileDto 회원프로필(int pageUserId, int principalId) {
UserProfileDto dto = new UserProfileDto();
.
.
.
.
.
userEntity.getImages().forEach((image) -> {
image.setLikeCount(image.getLikes().size());
});
return dto;
}
userService 에서 맨밑에 실체화된 DB인 likes 의 값의 사이즈를 읽어와서
setLikeCount 에 셋 해주거나
OR
<div class="comment">
<a href="#" class=""> <i class="fas fa-heart"></i><span>${image.getLikes().size()}</span>
</a>
</div>
이렇게 사이즈로 받아도 된다. 둘중 하나 하면된다.
'Spring > JPA + Security' 카테고리의 다른 글
[Spring Data JPA] 댓글구현하기 -1 모델 만들기 (0) | 2023.01.14 |
---|---|
[Spring Data JPA] 프로필 페이지 유저 사진 변경 - 1 (0) | 2023.01.14 |
[Spring Data JPA] 좋아요 구현하기 -5 좋아요 높은 순서의 인기 페이지 구현하기 (0) | 2023.01.13 |
[Spring Data JPA] 좋아요 구현하기 번외 무한참조 오류 잡기 (0) | 2023.01.13 |
[Spring Data JPA]좋아요 구현하기 -4 Ajax 연결 후 마무리하기 (0) | 2023.01.13 |
댓글