지인들과 프로젝트를 시작했다. 어떤 주제로 할지에 대해 정하고, 핵심 기능까지 정했다,,,!!
그 후에서 백엔드 개발자들끼리는 도메인 구조 설계를 해보기로 했다,,,!!
설계에 앞서서 어떤 기능들이 필요한지 여부에 대해 적어봤다.
[일반 회원]
- 소설 로그인(회원 가입)
- 프로필 정보 변경(nickname, image)
- 로그 아웃
- 회원 탈퇴
- 발자국 조회(내가 쓴 리뷰 조회)
- 찜한 shop 조회
- 작성한 리뷰 목록 조회
[admin]
- 새로운 shop 등록
- (대량) 새로운 shop 등록
- 새로운 카테고리 등록
- 새로운 Tag 등록
- Tag 삭제
- 가게 삭제
[shop]
- 위치 별 shop 목록 조회
- shop 상세 조회
- 유저 별
- shop 정보 수정
- shop 찜하기
- shop 별 review 조회
- shop 별 찜한 횟수, review 수 조회
[review]
- 리뷰 등록(사진 업로드 기능)
- 리뷰 공감하기
- 리뷰 삭제하기
해당 기능을 토대로 객체를 설계하고, 연관 관계 매핑까지 했다.
여기서 MenuGroup객체는 인기 메뉴, 대표 메뉴 등 메뉴를 그룹화 시켜서 사용할 수 있도록 만든 객체이다!
Like는 예약어로 실제 DB 테이블 생성시에는 table 이름을 변경해주어야 한다. 우리는 LIKES로 변경을 했다.
처음 설계에는 shop에 많은 것이 몰려 있었는데, 우리는 이것들을 아래와 같이 객체로 나눠서 만들었다.
여기서 Likes와 Reviews, shopTags, Menus는 연관 관계 매핑 때문에 생성을 안했다. 연관 관계 OneToMany 연관관계 매핑은 List객체에만 연결을 할 수 있는데, Likes와 Reviews Menus같은 경우는 여러 곳에 쓰이기 때문에, 일급 컬렉션으로 만들어 해당 객체에 하나의 요소에만 연결 할 수는 없어서,, 그냥 List로 넣어주었다.
도메인 구조 설계를 마치고, 객체를 기반으로 도메인을 생성했다. 그리고 각 도메인의 연관관계를 연결해주고, h2 database를 사용해, table까지 생성되는 것을 해보았다.
구조를 설계하고, 또 구조에 맞게 연관 관계를 매핑해주는 것이 쉽지 않다는 것을 많이 느꼈고, DB테이블 관점에서 바라보는 것이 아닌, 객체로 바라보는 것도 쉽지 않았다. 설계에 대한 부분도 더 공부해야겠다.
'📽project > 🎀ReBoN' 카테고리의 다른 글
OAuth login 구현 구조 변환 과정 (0) | 2022.05.29 |
---|---|
코드리뷰 처음이니? (0) | 2022.03.28 |
👐컨벤션 어디까지 해봤니❓ (0) | 2022.03.14 |