1. [펀잇] 리뷰 삭제 api 개선
(기존)
review에 연관된 reviewTag조회
reviewTag 삭제 * N
review에 연관된 reviewFavorite조회
reviewFavorite 삭제 * M
review삭제
product의 가장 좋아요가 많은 review 조회
(+변경사항이 있다면 product 업데이트)
= 1 + N + 1 + M + 1 + 1 (+1)
(개선)
review에 연관된 reviewTag조회
reviewTag 삭제
review에 연관된 reviewFavorite조회
reviewFavorite 삭제
review삭제
product의 가장 좋아요가 많은 review 조회
(+변경사항이 있다면 product 업데이트)
= 1 + 1 + 1 + 1 + 1 + 1 (+1)
JPA에서 entity를 삭제하는 여러가지 방법과 차이
2. [펀잇] 상품 목록 api 삽질 및 논의
SELECT
p.id,
p.name,
p.price,
p.image,
p.average_rating,
p.review_count
FROM product p
JOIN product p2
ON p2.id = :lastProductId
WHERE
p.category_id = 2 AND
(
(p.price = p2.price AND p.id < :lastProductId) OR
p.price > p2.price
)
ORDER BY p.price, p.id DESC
LIMIT 11;
현재 쿼리에서
lastproduct의 price를 가져오기 위해 product와 product를 join하고 있는데,
얘를 specification으로 바꾸다가 문득 이게 맞나..?라는 생각이 들었다.
그래서 팀원들이랑 논의한 결과 나온 의견
1) 현재 방식 유지
2) findById로 price가져와서 쿼리 실행
3) api 수정 (lastProductId뿐 아니라 lastProduct의 price도 쿼리 스트링으로 받아오자)
일단 좀 더 시도해보기로 했다.
으악 동적 쿼리 괴롭다!!!