1. 클래스 설계 - 도메인
도메인 클래스 설계에 대한 부분입니다. 현재 패키지는 각 도메인 별 기능을 분리하여 설계되어 있는데 그중 domain 패키지 내부 클래스들에 대한 설계입니다.
아키텍처 설계에서 구상되었던 패키지 내 예상 클래스 구조에서 추가되는 부분이 많을 것으로 생각되며 앞선 설계서 내용은 수정하지 않고 클래스 설계 마무리 단계에 최종 결과물이 올라갈 예정입니다.
2. Model
흔히 말하는 도메인 클래스입니다. 프로젝트 패키지 구조로 domain 패키지 내 repository와 패키지 구분을 위해 model 패키지를 따로 생성하였습니다. 비즈니스 모델을 관리하는 곳으로 User, Post, Comment, Photo 클래스에 해당합니다.
2.1 User Class
User 클래스 설계입니다. MySQL BIGINT 매칭을 위한 Long 타입 Id와 각 필드 값들을 private로 정의하였습니다. ENUM 타입 Role과 toMany 관계인 post와 comment를 List로 가지고 있습니다. 그리고 정보 수정 시 사용될 modify 메서드를 public으로 정의하였습니다.
2.2 Post Class
Post 클래스 설계입니다. 테이블 컬럼과 필드들을 매칭하였고 ENUM 타입으로 PostType가 있고 외래키 user_id와 매핑될 user 객체를 가지고 있습니다. toMany 관계의 Photos와 Comments List를 가지고 있고 수정을 위한 메서드가 정의되어 있습니다.
2.3 Comment Class
Comment 클래스 설계입니다. 댓글 삭제 여부를 나타내는 idDeleted 필드가 boolean으로 정의되었고 삭제 시점을 나타내는 deletedAt 필드는 LocalDateTime으로 선언되었습니다. 외래키를 나타내는 user와 post 객체가 존재하고 부모 댓글의 외래키를 나타내는 parentComment 객체가 자신인 Comment 타입으로 정의되어 있습니다. 댓글 내용 수정에 사용될 수정 메서드가 정의되었습니다.
2.4 Photo Class
Photo 클래스 설계입니다. MultipartFile을 통한 이미지를 다루는 엔티티로 원본 이미지의 이름, 저장용 이미지 이름, 그리고 저장 경로가 존재합니다.
2.5 BaseEntity Class
추가된 BaseEntity 클래스 설계입니다. Auditing을 위한 클래스로 생성 시점, 수정 시점을 별도로 분리하여 필요한 클래스들이 상속받아 사용하게 됩니다. 직접 사용할 일은 없기 때문에 추상 클래스로 정의하였습니다.
2.6 Role ENUM Class
유저의 권한 분류에 사용될 Role 클래스입니다. 기본값인 일반회원 USER와 매니저 직급의 MANAGER 그리고 관리자를 칭하는 ADMIN이 존재합니다.
2.7 PostType ENUM Class
게시글 타입 분류에 사용될 PostType 클래스입니다. 기본값인 일반 게시글 NORMAL과 매니저 이상이 작성 가능한 NOTICE 그리고 일정 추천수 이상일 경우 사용될 POPULAR이 존재합니다.
3. Repository
UserRepository 설계입니다. Spring Data Jpa를 사용하여 JpaRepository를 상속받는 Interface로 정의되었으며 사용자 로그인 아이디와 email을 통한 검색이 추가되었습니다.
3.1 UserRepository
UserRepository 설계입니다. Spring Data Jpa를 사용하여 JpaRepository를 상속받는 Interface로 정의되었으며 사용자 로그인 아이디와 email을 통한 검색이 추가되었습니다.
3.2.1 PostRepository
PostRepository 설계입니다. 유저의 아이디로 해당 유저가 작성한 게시글을 조회하는 메서드가 추가되었습니다.
3.2.2 PostQueryRepository
조건을 통한 게시글 검색을 위한 repository입니다. JPA 리포지토리를 상속 받지 않는 인터페이스로 adapters 패키지 아래에 구현체가 존재합니다.
3.3 CommentRepository
CommentRepository 설계입니다. 게시글의 아이디로 댓글을 조회하는 메서드와 부모 댓글의 아이디로 댓글을 조회하는 메서드가 추가되었습니다.
3.4 PhotoRepository
PhotoRepository 설계입니다. 게시글 아이디로 photo를 조회하는 메서드가 추가되었습니다.
'개인 프로젝트 > Toy & Side' 카테고리의 다른 글
[TOY] 설계 - Application (1) | 2024.10.28 |
---|---|
[TOY] 설계 - 유스케이스 (1) | 2024.10.13 |
[TOY] 설계 - 데이터베이스 DataBase (0) | 2024.10.06 |
[TOY] 설계 - 아키텍처[Hexagonal] & 패키지 (4) | 2024.10.03 |
[TOY] 설계 - 유스케이스 (0) | 2024.10.01 |