작성
·
276
0
답변 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)만 조회할 수 있습니다.
감사합니다.