상품(item)
상품 등록은 판매자만 가능(개발과정에서는 전부 가능하게 하고 제대로 작동하는게 확인되면 admin만 가능하게변경)
-
admin만 상품 등록,수정, 삭제 가능
-
name
-
category
-
quantity
-
price
-
type
상품과 카테고리의 관계
- 하나의 상품은 여러개의 카테고리를 가질 수 있음
- 하나의 카테고리는 여러개의 상품을 가질 수 있음.
공통적인 부분 BaseEntity 만들기
정도는 전부 포함되어있는 공통 변수기 때문에 추상클래스인 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 를 통해서 원하는 값만 바인딩 시키면서 프록시 객체가 넘어가지 않게 조정