본문 바로가기

프로젝트/개인 프로젝트 V18

(8) 장바구니, 상품 판매 회원은 다음과 같은 서비스를 이용할 수 있다. 회원은 상품을 등록해 판매할 수 있다. 회원은 상품을 장바구니에 넣어 주문할 수 있다. 회원은 변심으로 장바구니를 삭제할 수 있다. 회원은 자신이 등록한 상품, 장바구니를 조회할 수 있다. 장바구니 도메인 설계 1. 장바구니 생성 클라이언트는 장바구니 서비스에 장바구니 생성을 요청한다. 장바구니에는 해당 주문상품 정보(상품, 주문 수량)이 저장된다. 2. 회원 조회 장바구니를 이용하기 위해서는 회원 정보가 필요하다. 그래서 장바구니 서비스는 회원 저장소에서 회원을 조회 한다. 3. 장바구니 반환 생성한 장바구니를 반환한다. 장바구니 서비스 @Transactional public Long mergeCart(User user, Long itemId, int co.. 2022. 8. 2.
(7) 로그인 로그인 처리를 위한 보안 요구사항은 다음과 같다. 로그인 사용자만 해당 웹페이지를 사용할 수 있다. 로그인 하지 않은 사용자가 웹페이지에 접근하면 로그인 화면으로 이동된다. 쿠키,세션,인터셉터를 사용하여 인증체크를 구현한다. 로그인 처리하기 - 서블릿 HTTP 세션 서블릿은 세션을 위해 HttpSession 이라는 기능을 제공한다. 서블릿을 통해 HttpSession 을 생성하면 쿠키를 생성해준다. 쿠키 이름이 JSESSIONID 이고, 값은 추정 불가능한 랜덤 값이다. @PostMapping("/login") public String signIn(@Valid @ModelAttribute LoginFormDto form, BindingResult bindingResult, @RequestParam(def.. 2022. 8. 2.
(6) 페이징 처리 메인 페이지에 보여줄 상품 페이징 구현에 대해 정리해보자 한다. Spring Data 의 Pageble 과 Page를 Querydsl과 함께 사용해보도록 하자. 요약하자면 SpringData에서 Pageable은 페이지 요청에 대한 데이터를 담을때 사용하는 인터페이스이다. 응답할때는 Page를 사용한다. where 절 을 통해 동적쿼리를 만든다. 검색 키워드를 담을 ItemSearchCondition(DTO), 반환되는 데이터를 담을 MainItemDto(DTO)를 만들었다. 사용자 정의 리포지토리를 만든다. 사용자 정의 인터페이스 구현 스프링 데이터 리포지토리에 사용자 정의 인터페이스 상속 먼저 리파지토리에 JPAQueryFactory를 등록한다. 생성자에서 직접 생성하여 주입해준다. public cl.. 2022. 8. 2.
(5) domain, repository, service 계층별 설계 및 구현 repository 가 데이터를 접근하는 여러 방법들 service에서 repository.save(), repository.findAll() 등등 할 때, DTO로 접근하도록 한다. DTO에서 toEntity()로 변환하여, repository가 DB에 접근하도록 한다. saveItem 경우, Item item = itemFormDto.toEntity();으로 item 엔티티를 불러온다. service 메소드()에서 반환할 때, 엔티티를 노출하지 않도록 DTO로 반환한다. 서비스 로직 getItemDetail()은 ItemFormDto으로 반환하도록 한다. 파라미터로 DTO를 제공하여, dto.get...()로 꺼내도록 한다. saveItemImg(ItemInfo itemInfo, MultipartFi.. 2022. 8. 1.