본문 바로가기

전체 글63

4) Enum 활용 저번 프로젝트 만들 때, 아쉬웠던 점들을 최대한 보완해보려고 한다. 아쉬웠던 부분Item 정보 중, ItemType(상품등급), ItemCategory(상품카테고리) 설계하는 더 나은 방법을 찾았으면 한다.카테고리별로 상품 페이징하는 부분에서 아쉬운점이 있다.그 외 코드 리팩토링 Enum 활용하여 개선해보자.이전 프로젝트 설계했을 때, Item 필드에 ItemType(상품 등급), ItemCategory(상품 카테고리)가 있는데 String 문자열로 선언했었다. 자바의 enum 타입을 매핑한다.enum을 활용하여, 객체간 책임을 확실히 분리하도록 하자.객체가 상태(값)와 행위(로직)을 갖고 있는 것이 좋다.상품 등급과 카테고리를 명확히 표현하며, 각 타입은 본인이 수행해야할 기능과 책임만 가질 수 있게 .. 2023. 6. 13.
2) 도메인 모델과 테이블 설계 작은 쇼핑몰을 만들어가면서JPA로 실제 도메인 모델을 어떻게 구성하고 객체와 테이블을 어떻게 매핑해야 하는지 알아보자.먼저 요구사항을 분석하고 도메인 모델과 테이블을 설계하자.요구사항핵심 요구사항은 다음과 같다.회원은 구매와 판매 모두 가능하다.구매 시 여러 종류의 상품을 선택할 수 있다.상품을 카테고리(음반,도서,문구류)로 구분할 수 있고, 이후 더 확장될 수 있다.회원은 상품을 (카테고리별/가격순/이름검색) 조회할 수 있다.요구사항을 분석해봤을 때 기능은 다음과 같다.회원 기능회원가입시 아이디, 비밀번호, 배송지 주소 입력을 받는다.웹 서비스 이용을 하기 위해서 로그인을 해야 한다.회원가입/로그아웃/정보보기 기능을 제공한다.(회원 정보 수정/탈퇴 기능을 추가할 예정)상품 기능상품 조회/등록/수정/삭제.. 2023. 6. 13.
3) 프로젝트 구조 요구사항을 구현해보자.계층형 구조로 구현했다. Controller : MVC의 컨트롤러가 모여 있는 곳이다. 컨트롤러는 서비스 계층을 호출하고 결과를 뷰에 전달한다.Service : 비즈니스 로직이 있고 트랜잭션을 시작한다. 서비스 계층은 데이터 접근 계층인 리포지토리를 호출한다.Repository : JPA를 직접 사용하는 곳은 리포지토리 계층이다.Domain : 엔티티가 모여 있는 계층이다. 모든 계층에서 사용한다.스프링 데이터 JPA로 요구사항을 구현해보자. 사용자 정의 리포지토리 구현스프링 데이터 JPA에서는 필요한 메서드만 구현할 수 있는 방법을 제공한다.Paging Query 편에 자세히 작성했다. 1. 직접 구현할 메서드를 위한 사용자 정의 인터페이스를 작성한다.아래처럼 필요한 메서드를 정의.. 2023. 6. 13.
1) 프로젝트 목적과 주요 구현 기능 저번에 만든 쇼핑몰 프로젝트 Github를 개선해보려고 합니다.블로그에 프로젝트 과정을 기록하면서 개선해야 할 점으로 생각해둔 것을 리팩토링하려고 합니다. 구현 기능의 주요 포인트먼저, 구현기능에서 주요 변경사항은 다음과 같습니다.판매 (SALES) = 판매 관리를 위한 테이블을 추가판매 정보를 조회할 때 상품 정보가 필요하고, 상품에 판매자 정보가 필요하다.장바구니 = 구매한 상품을 담는 공간동일한 상품을 장바구니에 중복으로 담을 수 없으며, 각 상품은 한 번만 담을 수 있다.장바구니에서 상품을 제거하면 해당 주문이 취소된다.상품최소 1개의 상품 이미지를 업로드해야 한다.동일한 상품명과 카테고리로 중복 등록할 수 없다.회원이미 가입된 아이디로는 중복 가입이 불가능하다. 장바구니는 구매한 상품을 담는 공.. 2023. 6. 13.