fix(store): 아이템, 아이템 옵션 가져오기 쿼리 버그 픽스

- n + 1 querydsl의 distinct가 없어 중복 객체가 전달되던 점 변경
This commit is contained in:
bum12ark
2022-03-21 18:11:26 +09:00
parent 2bc63c92ac
commit d6ec6313f5
5 changed files with 17 additions and 42 deletions

View File

@@ -37,6 +37,7 @@ public class ItemRepositoryCustom {
return queryFactory.selectFrom(item)
.join(item.itemOptions,itemOption).fetchJoin()
.where(item.id.in(itemIds))
.distinct()
.fetch();
}

View File

@@ -1,28 +1,11 @@
package com.justpickup.storeservice.domain.itemoption.repository;
import com.justpickup.storeservice.domain.itemoption.entity.ItemOption;
import com.justpickup.storeservice.domain.itemoption.entity.QItemOption;
import com.querydsl.jpa.impl.JPAQueryFactory;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;
import java.util.List;
import static com.justpickup.storeservice.domain.item.entity.QItem.item;
@Repository
@RequiredArgsConstructor
public class ItemOptionRepositoryCustom {
private final JPAQueryFactory queryFactory;
public List<ItemOption> findByItem(Long itemId) {
return queryFactory.selectFrom(QItemOption.itemOption)
.join(QItemOption.itemOption.item)
.on(item.id.eq(itemId))
.fetch();
}
}

View File

@@ -1,25 +1,4 @@
package com.justpickup.storeservice.domain.itemoption.service;
import com.justpickup.storeservice.domain.item.dto.ItemDto;
import com.justpickup.storeservice.domain.itemoption.dto.ItemOptionDto;
import com.justpickup.storeservice.domain.itemoption.repository.ItemOptionRepository;
import com.justpickup.storeservice.domain.itemoption.repository.ItemOptionRepositoryCustom;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
@Service
@Slf4j
@RequiredArgsConstructor
public class ItemOptionService {
private final ItemOptionRepositoryCustom itemOptionRepositoryCustom;
public List<ItemOptionDto> getItemOption( ItemDto itemDto){
return itemOptionRepositoryCustom.findByItem(itemDto.getId())
.stream().map(ItemOptionDto::new)
.collect(Collectors.toList());
}
public interface ItemOptionService {
}

View File

@@ -0,0 +1,12 @@
package com.justpickup.storeservice.domain.itemoption.service;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@Slf4j
@RequiredArgsConstructor
@Service
public class ItemOptionServiceImpl implements ItemOptionService {
}

View File

@@ -1,5 +1,6 @@
package com.justpickup.storeservice.domain.itemoption.web;
import com.justpickup.storeservice.domain.itemoption.service.ItemOptionService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.RestController;
@@ -7,6 +8,5 @@ import org.springframework.web.bind.annotation.RestController;
@RequiredArgsConstructor
public class ItemOptionController {
private final ItemOptionService itemOptionService;
}