인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

zzzzz님의 프로필 이미지

작성한 질문수

코드로 배우는 React with 스프링부트 API서버

서비스계층과 컨트롤러(3) 질문있습니다.

작성

·

30

0

  1. 서비스계층과 컨트롤러(3)-상품수정 5분 42초에서

uuid값은 화면쪽에서 처리되면서 붙는다는게 무슨 의미인지 알 수 있을까요?

@Override
public void modify(ProductDTO productDTO) {
  
  //step1 read
  Optional<Product> result = productRepository.findById(productDTO.getPno());

  Product product = result.orElseThrow();

  //change pname, pdesc, price
  product.changeName(productDTO.getPname());
  product.changeDesc(productDTO.getPdesc());
  product.changePrice(productDTO.getPrice());
  product.changeKeyword(product.getKeyword());

  //upload File -- clear first 내용이 있을 수도 있기 때문에.
  product.clearList();

  List<String> uploadFileNames = productDTO.getUploadFileNames();

  if(uploadFileNames != null && uploadFileNames.size() > 0 ){
    uploadFileNames.stream().forEach(uploadName -> {
      product.addImageString(uploadName);
    });
  }
  productRepository.save(product);
}
  1. CustomFileUtil에서 saveFiles메소드에서 List<String> uploadNames = new ArrayList<>();  배열을 선언하고

     

    ProductServiceImp에서는 product.clearList();로 있던 배열에서 내용을 지우면서 사용하는데요.

     

     

    CustomFileUtil클래스 에서 데이터 베이스 1행에 저장할 리스트 생성해주고 그 리스트를 수정하는 역할이 product.clearList(); 인가요?

답변 2

0

구멍가게코딩단님의 프로필 이미지
구멍가게코딩단
지식공유자

  1. 다시 보니 좀 더 정확히 표현했어야 했네요.. 죄송합니다. 정확히는 화면을 처리하는 컨트롤러에서 업로되는 파일에 UUID값을 결정한다는 의미였습니다.

     

  2. 엔티티가 가지고 있는 uploadNames는 첨부 파일 테이블에 각 행에 들어가는 데이터가 맞습니다. 상품 수정시에는 기존의 상품 데이터는 의미가 없기 때문에 모두 삭제하도록 하기 위해서 clearList( )를 실행했습니다.

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. zzzzz님.

질문해주신 내용에 대한 이해를 돕기 위해 아래와 같이 간단하게 설명드리겠습니다.

첫 번째 질문: uuid값은 화면쪽에서 처리되면서 붙는다는 의미

이 강의에서 uuid는 파일의 고유한 식별자를 생성하기 위해 사용됩니다. 파일 업로드 시 파일 이름이 중복되거나 충돌할 가능성을 방지하기 위해 고유한 uuid를 파일 이름에 추가하여 저장합니다. 이 과정은 일반적으로 클라이언트 측(화면)에서 처리됩니다. 즉, 사용자가 파일을 업로드할 때 클라이언트 측에서 uuid를 생성하여 파일 이름에 붙이고 서버에 전송합니다.

두 번째 질문: product.clearList();의 역할

CustomFileUtilsaveFiles 메소드 내의 코드와 ProductServiceImplproduct.clearList(); 관련 설명입니다:

  • CustomFileUtil의 saveFiles 메소드 역할: 주어진 파일 리스트(MultipartFile)의 데이터를 처리하고 이를 파일로 저장한 후 해당 파일명(혹은 식별자들)을 리스트로 반환하는 기능을 합니다. 이때 반환되는 리스트는 저장된 파일들의 식별자를 포함합니다.

  • product.clearList();의 역할: Product 객체 내에서 관련 파일 리스트(혹은 이미지를 추가적으로 저장하는 리스트)를 초기화(클리어)하는 작업을 수행하는 역할입니다. 이렇게 초기화하는 이유는 현재 저장된 값들(예: 이전 파일 목록)을 제거하고 새로운 파일 목록을 추가할 준비를 하기 위함입니다.

CustomFileUtil에서 파일 저장용 리스트를 초기화하고 관리하는 부분과 실제 데이터베이스에 저장된 정보를 갱신하는 작업은 ProductServiceImpl 내의 clearList와 그 이후 단계가 수행합니다. clearList는 기존에 있던 파일 정보를 지운 후, 새로운 파일 정보를 추가하거나 갱신할 때 쓰입니다.

이전에 유사한 질문과 관련하여 파일 업로드와 리스트 관리에 대해 다루어진 답변이 있습니다:
- 서비스계층과 컨트롤러(3) 상품수정에 대한 답변을 참고해 보실 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

zzzzz님의 프로필 이미지

작성한 질문수

질문하기