inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

댓글 수 구현

페이징 방식의 readAll에서 count 쿼리 변경?

해결된 질문

120

parkhs

작성한 질문수 18

0

[댓글 수 구현] 강의의 마지막에서 페이징 방식 readAll() 메소드에서 commentRepository.count(~)를

이번에 ArticleCommentCount를 활용하여 구현한 count(articleid)로 바꿔도 된다고 말씀하셨는데, 둘이 엄밀히 다르지 않나요??

 

기존에 구현한 commentRepository.count(~)는 게시글별 댓글수를 조회하지만 limit가 있고,

이번에 구현한 count(articleId)를 limit 없이 그냥 게시글에 대한 댓글 수를 모두 조회하니 의미가 다르지 않나 싶어서 질문드려봅니다!

java mysql spring-boot kafka redis

답변 2

0

쿠케

parkhs님, 안녕하세요!

 

readAll() 메소드에서는 limit을 걸어놓고 페이징에 필요한 만큼만 카운트를 조회했었습니다.

이유는 실시간 count 조회에서 발생할 수 있는 성능 이슈를 방지하기 위함이었습니다.

이는 limit으로 일부 개수만 카운트하든, 전체를 카운트하든, 페이징 구현 관점에서는 아무런 문제가 없었기 때문에 가능한 조치였습니다.

그래서 어떠한 방법으로 카운트를 조회하든 페이징은 동일하게 동작할 수 있는 상황입니다.

실시간 count 조회가 아닌 이미 계산된 카운트를 조회하는게 더욱 효율적으로 동작할 것이고요.

말씀하신대로 두 count에서 응답하는 값은 다를 수 있지만, 페이징 구현 관점에서는 변경해도 문제 없다고 봐주시면 될 것 같습니다!

 

혹시 더 궁금한 점 있으시면 편히 문의 주세요!

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. parkhs님.

질문 주신 내용은 댓글 수 조회 관련 메서드에 대한 것입니다. 페이징 방식의 readAll() 메소드에서 commentRepository.count(~)ArticleCommentCount를 활용한 count(articleId)의 개념 차이에 대해 설명드릴게요.

두 메소드의 차이

  • commentRepository.count(~): 이 메소드의 경우, 특정 조건에서 페이징 기준에 맞춰 실제적으로 보여줄 댓글 수를 계산할 수 있습니다. 말하자면, 특정 페이지에 나타낼 댓글 수를 조건에 맞춰 계산하는데 사용됩니다.

  • ArticleCommentCountcount(articleId): 이 메소드는 페이징이나 제한 없이 특정 게시글에 대한 총 댓글 수를 반환합니다. 즉, 쿼리에서 제한을 두지 않고 항상 전체 댓글 수를 계산합니다.

적용 가능성

ArticleCommentCount를 사용한 count(articleId)는 페이징이나 기타 조건이 필요 없는 경우, 즉 전체 댓글 수만이 필요한 경우에 적합합니다. 하지만, 페이징을 통해 각 페이지에 표시될 댓글 개수를 계산하는 데에는 여전히 commentRepository.count(~)가 유용할 수 있습니다.

따라서, count(articleId)는 전체 댓글 수를 아무런 제한 없이 효율적으로 가져오는 반면, 페이징 방식에서 특정 페이지 내 댓글 수 판단에는 부적절할 수 있습니다.

이 두 개념을 혼동하지 않고 적절히 사용한다면, 구현한 시스템에 맞춰 효율적으로 댓글 수를 관리할 수 있습니다.

관련 질문이나 유사한 사례에 대한 보다 많은 정보를 원하시면 아래 링크를 참고해 보세요:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

@Version 어노테이션이 붙은 필드는 낙관적 락이든 비관적 락이든 업데이트가 됩니다.

0

31

1

consumer에서 에러가 발생할 경우 데이터 유실 문의

0

48

2

게시글 테스트 데이터 삽입

0

51

2

정렬, 필터, 검색 등의 조건이 붙을 경우 최적화할 수 있는 방법이 무엇이 있을까요?

0

104

2

좋아요 기능 정합성 보장 방법

0

98

2

좋아요 동시성처리 최적의 선택?

1

136

2

프론트엔드 msa 환경 api 주소 통합? 과 서버끼리 통신 방식에대해

0

92

2

안녕하세요 무한스크롤 강의듣다가 질문이 있습니다.

0

60

1

조회수 조회 로직 질문

1

67

2

비로그인 유저도 어뷰징 방지 정책

1

73

2

CommentServiceTest의 테스트 로직 질문

0

54

2

무한 스크롤 방식에서 페이지 번호 방식 쿼리의 문제점 의문

1

74

2

path 쿼리 관련 질문드립니다!

0

60

2

antigravity 에디터를 쓰신다면 종료해주세요

1

123

0

프로젝트 구조

0

88

2

article_like_count api test

0

79

2

이벤트 페이로드 객체의 생성 방식이 팩토리 메서드 패턴이 아닌 빌더 패턴인 이유가 궁금합니다!.

0

104

2

[33. 좋아요 수 구현] 에서 테스트 하는 화면 동시성 문제

0

92

2

findByPath에서 articleId로도 검색을 해야 할 것 같아요.

0

93

3

jpa ddl-auto none을 하는 이유와 join 방법

0

97

2

팩터리 메소드와 response 객체 사용 이유가 궁금합니다!

0

90

2

커서 기반 페이지네이션 과 무한 스크롤링

0

111

2

게시글 생성 로직에서 오류 발생시 redis 게시글 수 되돌리기

0

97

2

멀티 모듈이 아닌 MSA 환경에서 common

0

157

2