peachstore - 상품

JIWOO YUN·2024년 6월 21일
0

peach_store

목록 보기
3/4
post-custom-banner

상품(item)

상품 등록은 판매자만 가능(개발과정에서는 전부 가능하게 하고 제대로 작동하는게 확인되면 admin만 가능하게변경)

  • admin만 상품 등록,수정, 삭제 가능

  • name

  • category

    • 종류 객체 추가.
  • quantity

  • price

  • type

    • enum

상품과 카테고리의 관계

  • 하나의 상품은 여러개의 카테고리를 가질 수 있음
  • 하나의 카테고리는 여러개의 상품을 가질 수 있음.
    • 다대다
      • 둘 사이 다대일 일대다 관계로 나타내기

공통적인 부분 BaseEntity 만들기

  • id
  • createDate
  • modifyDate

정도는 전부 포함되어있는 공통 변수기 때문에 추상클래스인 BaseEntity를 통해서 관리 진행

  • 부모클래스에 속한 모든 필드를 사용하기 위해서 @superBuilder를 사용
    • 자식 객체가 부모 객체의 필드를 builder 패턴을 사용할 수 있게 해준다.

만들어 둔후에 postman에서 해당 상품 추가가 제대로 도는 지 먼저 확인

  • 아무나 신청가능하게 먼저 구현

조회시에 itemDto를 통해서 필요한 것들만 보내게

특정 상품 조회 기능 추가 진행

  • 파라미터를 통해서 이름을 통해서 찾기.
  • 특정이름이 포함되어있는지 확인하여 찾기를 통해서 여러개의 데이터를 가져올 수 있도록.
public List<Item> findAllByItemName(String name) {
    return itemRepository.findAllByNameContaining(name);
}

상품 수정

  • item id를 이용해서 값을 수정하는걸로
    • 나중에는 admin만 가능
    • 현재 생각나는 방법은 post 를 이용해서 데이터 수정방법
    • patch 와 put 을 사용하는 방식은 나중에 해보자.

카테고리의 경우 없는 카테고리인 경우 카테고리는 만들어주기

상품 삭제

  • id를 통해서 해당 id 상품을 삭제
  • 현재는 개발 편의를 위해 admin이 아닌 로그인을 하지 않아도 삭제가 가능하게 진행
    • 이 부분은 주문까지 전부 완료 후 권한을 통해서 제어예정

트러블 슈팅

Jackson이 Hibernate 프록시 객체를 직렬화할 수 없는 문제로 오류 발생

  • DTO를 통해서 필요한 데이터를 전달하여 직렬화 문제 해결
  • 프록시 객체의 경우 직렬화가 불가능하기 때문에 DTO로 필요한 값만 넘겨줌으로써 프록시 객체가 아닌 값으로 넘겨줌.
    • 기본적으로 lazyloding을 사용중이기 때문에 프록시 객체가 넘어가게 됨
    • DTO 를 통해서 원하는 값만 바인딩 시키면서 프록시 객체가 넘어가지 않게 조정
profile
열심히하자
post-custom-banner

0개의 댓글