상품 등록하기 - Entity, DTO, View

Codren·2021년 9월 28일
0

Spring Boot 쇼핑몰

목록 보기
19/32

Section 1. 상품 등록 페이지

1. 상품 이미지 Entity

  • Item (상품) Entity 와 다대일 단방향 관계를 갖는 ItemImg Entity 생성




2. modelmapper 라이브러리 추가

  • 상품 등록 화면으로부터 전달받은 DTO 객체를 Entity 로 변환해야함
  • 상품 조회 결과를 화면에 반환할 때 Entity 를 DTO 객체로 변환해야함
  • modelmapper 라이브러리를 통해서 서로 다른 클래스의 값을 필드의 이름과 자료형이 같으면 getter, setter 를 통해 값을 복사해서 객체를 반환
<dependency>
    <groupId>org.modelmapper</groupId>
    <artifactId>modelmapper</artifactId>
    <version>2.3.9</version>
</dependency>




3. 상품 관련 DTO 객체 생성

  • 상품을 등록 및 조회할 때 지정된 필드뿐 아니라 추가적인 데이터들의 이동이 많으므로 여러 DTO 이용
  • 상품 이미지에 대한 DTO
  • ItemImg 엔티티 객체를 ItemImgDto 객체로 변환
  • 화면으로부터 입력 받은 상품 데이터 정보 DTO
  • Item 엔티티 객체와 DTO 객체 간의 변환




4. ItemController

  • ItemFormDto 객체를 model 객체에 담아서 뷰로 전달




5. ItemForm View

  • github 참고
  • 상품 이미지 부분은 상품을 등록하는 경우와 상품을 수정하는 경우로 나뉨
  • 상품 등록 페이지에서 상품 이미지를 browse 기능을 통해 선택했을 때 (change) 수행되는 스크립트



  • 파일을 전송할 때는 form 태그의 enctype(인코딩 타입) 값을 "multipart/form-data" 로 설정
 <form role="form" method="post" enctype="multipart/form-data" th:object="${itemFormDto}">



  • 상품 판매 상태를 "판매중" 또는 "품절"로 선택할 수 있게 <select> 태그 이용



  • 상품을 처음 등록할 경우 Controller 를 통해 전달 받은 itemFormDtoList 가 존재하지 않음
  • Thymeleaf builtin 메소드 #numbers.sequence() 를 통해서 1 부터 5 까지 상품이미지명 출력



  • 상품을 수정할 경우는 이미 존재하던 상품 이미지가 있으므로 itemFormDtoList 가 존재함
  • 이미지가 존재하면 해당 이미지의 이름을 출력하고 빈칸이면 상품이미지+index 를 출력



  • 상품을 처음 등록할 때는 "저장" 버튼을 출력
  • 상품을 수정할 때는 "수정" 버튼을 출력




6. 상품 등록 페이지 화면




7. application.properties 수정

  • 상품 등록 페이지는 "ADMIN" 권한을 가진 유저만 접근 가능
  • spring.jpa.hibernate.ddl-auto=create 설정을 validate 로 설정
  • application-test.properties 는 create 로 설정 변경

0개의 댓글