Hansel
리팩토링 / 단일책임 본문
현재까지의 프로젝트는 기능적으로는 작동이 된다.
하지만 내부적으로 코드가 클린하지 않고 객체지향의 원칙을 잘 지키고 있지 않다는 느낌이 들었다.
fetch join으로 대부분의 데이터를 한번에 가져왔으니 하나의 DTO가 연관된 모든 관계들에 대한 DTO 또한 생성하도록 되어있다.
DTO간에 의존성이 짙고 단일책임의 원칙을 지키고 있지 않다는 생각이 들었다.


SellerDTO는 메인화면과 업체 정보 등을 표시할때 사용된다.
하지만 Seller만 다루지 않고 menus, book 등 연관된 모든 엔티티들의 DTO 또한 관리하고 있다.
이는 가독성이 떨어질 뿐만 아니라 추후에 변경이 생겼을때 대처하기 어렵다.
SellerDTO는 seller의 데이터만 다루도록 하고 각 엔티티별로 나누는 작업을 해야한다.

Menu는 MenuDto에서 처리하도록 SellerDto에선 전부 제외했다.

Seller에 대한 정보 요청에서도 필요한 정보만 반환하도록 변경했다.

쓸데없이 메뉴에 달린 댓글까지 페치조인하던 쿼리도 전부 쳐내고 필요한 데이터만 가져오도록 수정했다.
업체 관련
메인화면에 필요한 데이터들은 다음과 같다.
1. 등록된 전체 가게 목록
필요한 데이터 필드 => 가게이름, 사진, 주소, 카테고리
현재 카테고리와 주소는 구현이 안되어있다.
먼저 구현하도록 하자.
카테고리는 어떤 식으로 구현할것인가
생각나는 방법은 엔티티로 뽑아내거나 Enum 타입으로 하는 방식이 있다.
1. 엔티티로 추출
Category 엔티티를 따로 뽑아내서 1:다 매핑
2. Enum 타입 애트리뷰트
단일 애트리뷰트로 추가
현재 Seller의 애트리뷰트가 적은 편이 아니라 엔티티로 추출하기로 했다.


유저는 가입 후 카테고리를 등록, 수정 할 수 있다.






다음 단계
1. 주소 api 사용해서 편리하게 주소 입력
2. Book, Menu 등 리팩토링(쿼리,DTO,ajax)
3. 카테고리별 검색