검색, 현황 페이지

신경연·2023년 5월 19일
0

비품인

목록 보기
7/7

검색, 현황 페이지

후에 시간이 된다면 ElasticSearch를 써보고 싶었지만, 서비스의 전체적인 흐름을 완성하는 것이 가장 우선순위 높은 목표였기에 후순위로 밀려 결국 쓰진 못했습니다. 대신에 쿼리를 사용하여 진행해 보았습니다.

Controller

요청(Requests) 현황 페이지는 keyword, 요청타입, 처리상태, page, size를 받았습니다.
비품 현황 페이지는 keyword, 카테고리, 비품 상태(ex.재고), page, size를 받았습니다.
size의 경우 front에서 반응형을 고려하였기 때문에 들어가게 되었습니다.
전체 조회의 경우 defaultValue를 활용하여 쿼리스트링을 안써도 가능하도록 하였습니다.

Service

User 페이지와 Admin 페이지에 같이 사용하기 위해 UserRole을 사용하여 조회 데이터 범위를 설정하였습니다. keyword와 요청타입, 처리상태 등도 조회 범위를 설정하여 넣을 수 있도록 하였습니다. (처음에는 JPQL로 진행해서 Where절을 분리할 수가 없어, in을 활용하여 하나의 로직으로 구현되도록 하였습니다.)

Repository

QueryDsl의 코드입니다. DB에 대한 공부가 부족하지만, JPQL에서 QueryDsl로 옮기면서 Where절의 분리가 가능해졌는데 in을 활용하여 전체 조회도 고려하는 것이 아닌 조건이 존재할 때만 Where절에 추가하는 방식으로 하면 좀더 쿼리 성능이 나아지지 않을까 생각해 보았습니다. 너무 프로젝트 마지막 즈음에 DSL로 전환하여 이를 적용하지 못한 점이 조금 아쉽습니다.

profile
반갑습니다

0개의 댓글