1. 클래스 설계 - application
application 패키지 내부 클래스 설계입니다. 유스케이스 설계를 통해 정의된 인터페이스 구현체인 Service 클래스와 데이터 전송을 위한 DTO 클래스를 설계하였습니다.
2. user.application
user 패키지 application 하위 설계입니다. User 엔티티에 대한 DTO와 Service 클래스가 존재합니다. DTO의 경우 이너 클래스를 통해 요청과 응답에 사용할 DTO를 분리하였습니다.
2.1 클라이언트 통신 DTO
클라이언트와 통신할 API 스펙에 사용될 DTO 입니다. User에 관한 통신에 사용됩니다.
2.1.1 application.dto.UserDTO.Request
User 엔티티 요청에 사용될 DTO입니다. 회원가입, 회원 정보 수정 등 요청 정보 전송을 위해 사용됩니다.
2.1.2 application.dto.UserDTO.Response
User 엔티티 응답에 사용될 DTO입니다. 회원 정보 조회 시 데이터 전송을 위해 사용합니다. 해당 회원이 작성한 게시글들을 볼 수 있습니다.
2.2 내부 전송 DTO
내부 계층 간 데이터 전송에 사용될 DTO 입니다. User에 관한 데이터 전송에 사용됩니다.
2.2.1 application.dto.UserUpdateDTO
User 엔티티 수정을 위한 데이터 전송 DTO 입니다. User 정보를 수정에 사용되는 username, password, email 값 들을 가지고 있습니다.
2.3 application.service.UserService
User 도메인의 비즈니스 로직이 들어있는 Service 클래스입니다. UserCrudUseCase 인터페이스와 LoginUseCase 인터페이스를 상속받아 구현됩니다.
필드로 UserRepository를 가지고 있습니다.
3. post.application
post 패키지 application 하위 설계입니다. Post 엔티티에 대한 DTO, 검색 조건을 위한 PostSearchCond와 비즈니스 로직이 담긴 Service 클래스가 존재합니다.
3.1 클라이언트 통신 DTO
클라이언트와 통신할 API 스펙에 사용될 DTO 입니다. Post에 관한 통신에 사용됩니다
3.1.1 application.dto.PostDTO.UserRequest
Post 엔티티 응답에 사용될 DTO입니다. 회원 전용 DTO로 회원이 게시글 등록 및 수정 요청의 경우 데이터 전송을 담당하게 됩니다. MultipartFile로 이미지 파일 리스트를 가집니다.
3.1.2 application.dto.PostDTO.NonUserRequest
비회원 유저들을 위한 DTO입니다. 비회원 유저가 게시글 등록 및 삭제 요청 시 데이터 전송을 담당하게 됩니다. 회원 아이디 대신 게시글 표기 이름과 비밀번호를 가지고 있습니다.
3.1.3 application.dto.PostDTO.Response
응답에 사용될 DTO입니다. 게시글 조회를 위한 데이터 전송을 담당하고 있습니다.
3.1.4 application.dto.PostDTO.UserInfoResponse
회원 정보 조회 시 해당 회원이 작성한 게시글 전달을 위해 사용되는 DTO입니다.
3.1.5 application.dto.PostSearchCond
Post를 검색하기 위한 조건이 들어있는 클래스입니다. 제목 검색, 내용 검색, 작성자 검색 등을 조합한 검색을 위해 사용됩니다.
3.2 내부 전송 DTO
계층 간 내부 데이터 전송에 사용되는 DTO 입니다. Post에 관한 데이터 전송 시 사용됩니다.
3.2.1 application.dto.PostUpdateDTO
게시글 수정에 관한 DTO로 게시글 내용, 제목, 타입에 대한 값 들을 가지고 있습니다.
3.3 application.service.PostService
Post 도메인의 비즈니스 로직이 정의된 클래스입니다. PostCrudUseCase 인터페이스와 RecommendPostUsecase 인터페이스를 상속받아 구현됩니다.
필드로 PostRepository, PostQueryRepository, RedisTemplate, 만료시간 상수가 존재합니다.
4. comment.application
comment 패키지 application 하위 설계입니다. Comment 엔티티의 DTO와 Service 클래스가 존재합니다.
4.1 클라이언트 통신 DTO
클라이언트와 통신할 API 스펙에 사용될 DTO 입니다. Comment에 관한 통신에 사용됩니다.
4.1.1 application.dto.CommentDTO.UserRequest
Comment 엔티티 회원 요청에 사용될 DTO입니다. 회원이 댓글 작성 및 수정 요청 시 데이터 전송을 담당합니다.
4.1.2 application.dto.CommentDTO.NonUserRequest
비회원 요청을 담당할 DTO입니다. 비회원 댓글 작성 및 수정 요청에 사용됩니다.
4.1.3 application.dto.CommentDTO.Response
Comment 엔티티 응답에 사용될 DTO입니다. 게시글 조회 시 출력될 댓글 데이터 전송을 담당합니다.
4.2 내부 전송 DTO
계층 간 내부 데이터 전송에 사용되는 DTO 입니다. Post에 관한 데이터 전송 시 사용됩니다.
4.2.1 application.dto.CommentUpdateDTO
댓글 수정에 대한 정보를 가진 DTO 입니다. 댓글 내용에 대한 값을 가지고 있습니다.
4.3 application.service.CommentService
Comment 도메인의 비즈니스 로직이 정의된 클래스입니다. CommentCrudUseCase를 상속받아 구현됩니다.
필드로 CommentRepository, PostRepository가 존재합니다.
5. photo.application
photo 패키지 application 하위 설계입니다. Photo 엔티티의 DTO와 Service 클래스가 존재합니다.
5.1 application.dto.PhotoDTO
Photo 엔티티 데이터 전송에 사용될 PhotoDTO입니다. 이미지 파일이 저장된 경로, 업로드 시간 등을 가지고 있습니다.
5.2 application.service.PhotoService
Photo 도메인의 비즈니스 로직이 정의된 클래스입니다. PhotoCrudUseCase를 상속받아 구현되었습니다.
이미지를 본문 내용에 포함 시키는 방법을 사용할 예정으로 이미지 추가 시 해당 이미지가 tempUpload를 통해 임시 저장되고 게시글 등록 시 upload가 진행됩니다. 매일 특정 시간에 임시 저장 파일들을 실행시키는 메서드가 존재합니다.
'개인 프로젝트 > Toy & Side' 카테고리의 다른 글
[TOY] 설계 - Adapters (Controller) (0) | 2024.11.14 |
---|---|
[TOY] 설계 - Adapters (Controller 제외) (0) | 2024.11.03 |
[TOY] 설계 - 유스케이스 (1) | 2024.10.13 |
[TOY] 설계 - 도메인 (1) | 2024.10.09 |
[TOY] 설계 - 데이터베이스 DataBase (0) | 2024.10.06 |