[main-project] 0313

박채은·2023년 3월 13일

Project

목록 보기
10/21

태그, 카테고리 검색 기능

게시글 목록 리스트를 가져올 때, 필요한 Param은 5가지이다.

  • page, size
  • sorting
  • category
  • tagName

sorting을 page와 size와 함께 묶어 Pageable로 받을 수도 있었으나 인기순 정렬도 있기 때문에 따로 뺐다.

우선 고려해야할 사항은 다음과 같다.

  • sorting이 인기순인지, 최신순인지
  • category, tagName이 모두 존재하는 경우
  • category는 있고 tagName는 없는 경우
  • category는 없고 tagName는 있는 경우

사실 가장 간단한 방법은 중첩 if 문 써서 각 경우별로 쿼리 적용하면 될 것 같은데 그렇게 되면 너무 하드코딩이 되어 다른 방법이 없는지 찾아보았다.

@Query 어노테이션을 사용하게 되면, 결국 쿼리가 고정되게 되는데 정적으로 쿼리를 생성해줘야겠다고 생각이 들었다.

동적 쿼리

https://tecoble.techcourse.co.kr/post/2022-10-11-jpa-dynamic-query/
https://tecoble.techcourse.co.kr/post/2021-08-08-basic-querydsl/
https://velog.io/@jkijki12/Spring-QueryDSL-%EC%99%84%EB%B2%BD-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0
https://tychejin.tistory.com/415

이 블로그를 보고 다양한 동적 쿼리 방식이 있다는 걸 알게 되었다.
그 중에서 Querydsl을 사용해서 쿼리를 생성하려고 한다.

Querydsl 문법

https://jddng.tistory.com/334


하지만 Querydsl를 사용해서 구현하는 코드나, Querydsl를 사용하지 않는 코드나 별다른 점이 없어 보였다.
오히려 Querydsl를 사용했을 때, 코드의 복잡도가 올라가는 것 같아서 Querydsl를 사용하지 않고 @Query와 JPA 메서드를 통해 구현을 했다.

0개의 댓글