Develop/JPA

JPA를 이용해 조회수 간단하게 구현하기

롱하 2024. 7. 2. 16:54
@Controller
@RequiredArgsConstructor
public class MediaViewController {
	private final NoticeSubViewService noticeSubViewService;
	private final ModelMapper modelMapper;
	private final NoticeSubRepo noticeSubRepo;
	
	@GetMapping("/media/{id}")
	String operate(@PathVariable(required = true) Long id,
								Model model, @ModelAttribute("paramDto") NoticeSubConditionDto paramDto) {
		
		paramDto.setSearchLang(LangType.ko.name());
		paramDto.setSearchTargetId(id);
		
		NoticeSubEntity media = noticeSubRepo.findByLangAndId(paramDto.getSearchLang(), paramDto.getSearchTargetId());
		
		if(media != null) {
            if (media.getCount() == null) {
                media.setCount(0L);
            }
			media.setCount(media.getCount() + 1);
			noticeSubRepo.save(media);
		}
		
		MediaDto dto = modelMapper.map(noticeSubViewService.operate(modelMapper.map(paramDto, NoticeSubCondition.class)), MediaDto.class);
		
		model.addAttribute("dto", dto);
		
		return "media/view";
	}
}
@Entity
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "tbl_notice_sub")
@org.hibernate.annotations.Table(appliesTo = "tbl_notice_sub", comment = "멀티 게시판")
public class NoticeSubEntity {
    
    @Column
	@Comment("조회수")
	private Long count;
    
    }