본문 바로가기

JAVA/- Spring

[spring boot] db에 이전에 넣었던 값 다시 넣어보기

쇼핑몰에서 물품등록을 여러개 해야할 때 홈페이지가서 하나하나 등록하는것은 어렵습니다. 그래서 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로 변환시켜서 넣어보면 좋겠지만 아직은 더미 데이터가 들어갑니다. 이미지 파일형태로 들어가는것을 구현해봐야 겠습니다.

 

🟩결과

실행하면 동일한 값들이 저장되는것을 확인할 수 있습니다.

 

참고

https://kukekyakya.tistory.com/549

https://mangkyu.tistory.com/145

728x90