• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

BooleanBuilder, dto 변환, fetchCount() 질문 있습니다

22.02.26 18:57 작성 조회수 171

0

강의 너무 감사합니다~ 다 듣고 여러가지 시도해보니 3가지 의문점이 있어서 질문드립니다!
 
1. where에 BooleanBuilder 사용보다는 BooleanExpression을 사용하는게 좀 더 좋다는 강의를 들었습니다.
https://www.inflearn.com/questions/94056
 
그런데 위 링크를 보면 강의에서 where(builder)를 쓰시는 것과 달리 BooleanBuilder를 강의에서 소개해주신 BooleanExpression 방법처럼 체인해서 사용하고 계십니다. BooleanBuilder를 사용하면 BooleanExpression과 달리 where절에 전체 null일 경우 예외가 터지는 경우도 해결할 수 있는 것으로 보이는데 링크에서 사용하신 방법을 쓰는게 바람직할까요? 2. domain을 dto로 변환하는 과정에서 domain에 있지 않은 좋아요 갯수, 좋아요 여부 등의 추가 변수들을 어디에서 처리하면 좋을까요? java service쪽에 가져와서 해결하는게 좋을까요, 아니면 repository에서 querydsl로 조회하고 모두 가공한 뒤에 그 결과를 service쪽에 가져오는게 나을까요? 엔티티 편의 메서드를 사용하면 원하는 결과를 바로 dto로 조회하지 못하므로 domain을 불러와서 변경 작업 후 dto로 또다시 변경해줘야한다고 생각이 들어서 깔끔하게 처리하는 방법이 있나 궁금합니다 3. 카운트 쿼리를 날릴 때 성능을 위해서 fetchResults()대신에 fetch()와 fetchCount()를 따로 날리면 좋다고 배웠습니다. 개인적으로 이 경우 그냥 fetch()로 받아온 List를 .size()로 count를 가져오는게 편하다고생각되는데 따로 fetchCount()로 조회하는 이유가 있을까요?

답변 1

답변을 작성해보세요.

0

안녕하세요. 돈까스는맛있어님

1. 그런데 위 링크를 보면 강의에서 where(builder)를 쓰시는 것과 달리 BooleanBuilder를 강의에서 소개해주신 BooleanExpression 방법처럼 체인해서 사용하고 계십니다. BooleanBuilder를 사용하면 BooleanExpression과 달리 where절에 전체 null일 경우 예외가 터지는 경우도 해결할 수 있는 것으로 보이는데 링크에서 사용하신 방법을 쓰는게 바람직할까요?

-> 네 여러가지 방법이 있다고 이해하시면 될 것 같아요.

2. domain을 dto로 변환하는 과정에서 domain에 있지 않은 좋아요 갯수, 좋아요 여부 등의 추가 변수들을 어디에서 처리하면 좋을까요? java service쪽에 가져와서 해결하는게 좋을까요, 아니면 repository에서 querydsl로 조회하고 모두 가공한 뒤에 그 결과를 service쪽에 가져오는게 나을까요? 엔티티 편의 메서드를 사용하면 원하는 결과를 바로 dto로 조회하지 못하므로 domain을 불러와서 변경 작업 후 dto로 또다시 변경해줘야한다고 생각이 들어서 깔끔하게 처리하는 방법이 있나 궁금합니다

-> 이 부분은 둘다 정답이 됩니다. 본인 상황에 맞는 편한 방법을 선택하시면 됩니다^^

3. 카운트 쿼리를 날릴 때 성능을 위해서 fetchResults()대신에 fetch()와 fetchCount()를 따로 날리면 좋다고 배웠습니다. 개인적으로 이 경우 그냥 fetch()로 받아온 List를 .size()로 count를 가져오는게 편하다고생각되는데 따로 fetchCount()로 조회하는 이유가 있을까요?

-> 페이징 쿼리는 전체 데이터 수가 필요합니다. 그런데 list.size()는 현재 조회한 데이터(limit가 10이면 최대 10)만 조회할 수 있습니다.

감사합니다.