쇼핑몰에서 물품등록을 여러개 해야할 때 홈페이지가서 하나하나 등록하는것은 어렵습니다. 그래서 for문을 통해 자동적으로 물품등록이 되어서 여러가지 상황을 만들어보고자 합니다.
Product는 (Members와 Category 테이블)이 다대일로 연결되어있습니다.
ProductImage는 Product와 다대일로 연결되어 있습니다.
Product product = productService.findById_Product((long) 314);
//더미 이미지 만들기, jpg -> MultipartFile로 만들기가 힘들다
List<MultipartFile> imageFiles = List.of(
new MockMultipartFile("7a88ca37-9e3b-4be3-af72-1bd6e5b7fe9f.jpg",
"7a88ca37-9e3b-4be3-af72-1bd6e5b7fe9f.jpg",
MediaType.IMAGE_JPEG_VALUE, "test1".getBytes())
);
//새로운 물품 만들기
ProductFormDto test_product = ProductFormDto.builder()
.name(product.getName())
.instancePrice(product.getInstantPrice())
.auctionPrice(product.getAuctionPrice())
.Explanation(product.getExplanation())
.category("패딩점퍼,여성의류")
.imageFileList(imageFiles)
.build();
//DB에 있는 memeber 가지고 오기, member가 정해지지 않으면 영속성에서 외래키 오류가 발생한다
Members members = memberRepository.findById((long) 6).get();
productService.save(test_product, members);
productImageRepository.save(product.getProductImagesList().get(0));
🟩현재 DB에 있는 product를 가지고 와야 합니다.
service에서 구현해 놓은 findById_Product로 id를 통해 product를 가져와 봅시다.
🟩그리고 service에 구현해 놓은 save동작을 수행해야 합니다.
save()를 하려면 controller에서 주고 있는 productFromDto와 Mebers 객체가 필요합니다.
이부분을 자동화해서 view(화면)에서 일일히 치지 않고 하드코딩을 통해 DB에 넣을 수 있게되었습니다.
그런데 save를 하기 전 Product와 외래키로 연결되어 있는 Members객체가 필요합니다.
그렇지 않으면 Product가 영속성에 저장될 때 Members 객체가 null값이라고 하기 때문입니다.
Members도 id로 DB에서 가지고 오겠습니다.
🟩가짜 MultipartFile 넣어주기
지금 ProductFormDto는 MultipartFile로 DB에 저장하고 있습니다. 현재 저장되어 있는 img를 MultipartFile로 변환시켜서 넣어보면 좋겠지만 아직은 더미 데이터가 들어갑니다. 이미지 파일형태로 들어가는것을 구현해봐야 겠습니다.
🟩결과
실행하면 동일한 값들이 저장되는것을 확인할 수 있습니다.
참고
728x90
'JAVA > - Spring' 카테고리의 다른 글
[lombok] @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor 에 대해 (0) | 2022.05.29 |
---|---|
[spring boot] Paging 처리 해보기 (0) | 2022.05.18 |
[spring boot] @Transactional이란? (0) | 2022.05.13 |
[spring boot] JPA, 다대일 관계에서 '다'쪽이 주인이다. (0) | 2022.05.01 |
[spring boot] spring boot로 카테고리 상세화 만들어보기 (0) | 2022.04.26 |