Skip to content

Modeling

SR edited this page Dec 1, 2021 · 1 revision

모델링

  • 확인된 API Spec을 기준으로 TDD를 통해 Entity 설계
  • 테스트 작성 시 POJO 테스트, Slice 테스트를 최대한 활용하도록 한다.
  • Domain Entity에 대한 객체 생성 테스트
  • Domain Repository Layer에 대해 @DataJpaTest를 활용하여 Repository 단순 기능 테스트
  • Service Layer에 대해 Slice 테스트하는 방법을 알아보기, 그 전가지는 통합테스트로 진행(@SpringBootTest)
  • Presentation Layer에 대한 테스트 방법들 알아보기

User와 Profile 엔티티 간의 관계 구성

  • User내에 Profile 관련 필드를 포함하고 있는 것으로 구성 JPA를 사용하므로 @Embedded와 @Embeddable 어노테이션을 활용하여 구현하였다.

User와 Follow간의 관계 구성

  • Follow는 엔티티로 가져가느냐 User와의 관계로 정의하고 가느냐 엔티티 구성이 달라진다.

  • User 내에 Follow를 포함하는 방식으로 구성하느냐, User와 Follow 엔티티를 따로 구성하느냐 관련 로직의 위치가 달라진다.

  • User와 Follow 간는 1:N, N:1 구성으로 FromUser-Follow-ToUser 관계를 갖도록 구성하여 Follow 엔티티를 구성하였다.

User와 Article과의 관계 구성

  • 사용자가 다수의 글을 작성할 수 있으므로 1:N 관계를 가지며 양방향 연관관계를 갖도록 구성하였다.

User와 Article에 대한 Favorite 관계 구성

User와 Article에 대한 Comment 도메인

Article과 Tag

  • 글에 대한 태그를 달 수 있도록 구현 ❌ -> 글을 작성할 때 태그를 달아서 작성하도록 구현
  • 결국 태그는 카타고리의 기능을 하는 것과 같은 것으로 판단

Tag

  • 깃 허브의 기술 Topics 처럼 정의된 기술도 추가가 가능하고 새로운 기술명도 추가하는 구현방식으로 엔티티 설계를 생각했지만 API Spec에서는 조회 기능만 존재하므로 enum으로 리펙토링 한다.