[아키텍쳐] 패키지 구조 : 계층형 VS 도메인형 어떤 것을 선택할까?
우리프로젝트에서 백엔드는 계층형을 사용했다.
main
├── java
│ └── back
│ └── ahwhew
│ ├── AhwhewApplication.java
│ ├── config
│ │ ├── S3Config.java
│ │ ├── WebConfig.java
│ │ └── jwt
│ │ └── JWTProperties.java
│ ├── controller
│ │ ├── MypageController.java
│ │ ├── ResultController.java
│ │ ├── StatisticController.java
│ │ └── UserController.java
│ ├── dto
│ │ ├── AverageDTO.java
│ │ ├── DashboardDTO.java
│ │ ├── DashboardResDTO.java
│ │ ├── DiaryDTO.java
│ │ ├── GifDTO.java
│ │ ├── MonthlyUserStatisticsDTO.java
│ │ ├── MyShopDTO.java
│ │ ├── ResponseDTO.java
│ │ ├── ResultDTO.java
│ │ ├── StatisticsDTO.java
│ │ ├── TopMemesDTO.java
│ │ ├── TopMemesResponseDTO.java
│ │ └── UserDTO.java
│ ├── entity
│ │ ├── BaseEntity.java
│ │ ├── DiaryEntity.java
│ │ ├── GifEntity.java
│ │ ├── ResultEntity.java
│ │ ├── StatisticsEntity.java
│ │ └── UserEntity.java
│ ├── repository
│ │ ├── DiaryRepository.java
│ │ ├── GifRepository.java
│ │ ├── ResultRepository.java
│ │ ├── StatisticsRepository.java
│ │ └── UserRepository.java
│ ├── security
│ │ ├── JwtAuthenticationFilter.java
│ │ └── TokenProvider.java
│ └── service
│ ├── DashboardService.java
│ ├── DiaryService.java
│ ├── KomoranService.java
│ ├── MypageService.java
│ ├── MyshopService.java
│ ├── StatisticsService.java
│ ├── UserService.java
│ └── resultService
│ ├── AmazonS3Service.java
│ ├── ClassifyTagService.java
│ ├── GifService.java
│ ├── KarloImageEditService.java
│ ├── KarloImageGeneratorService.java
│ ├── KarloService.java
│ ├── NaverPapagoService.java
│ ├── NaverSentimentService.java
│ └── ResultService.java
└── resources
├── application.properties
├── application.yml
├── static
└── templates
└── diary.html
더 정리하자
main
├── java
│ └── back
│ └── ahwhew
│ ├── config
│ ├── controller
│ ├── dto
│ ├── entity
│ ├── repository
│ ├── security
│ └── service
└── resources
├── application.properties
├── application.yml
├── static
└── templates
└── diary.html
프로젝트 데이터베이스 엔터티 설계 - 주요 특징
ManyToOne
관계로 UserEntity와 연결, 사용자와의 일대다 관계 설정.@PrePersist
를 활용하여 일기 작성일을 현재 시간으로 자동 초기화.ManyToOne
관계로 UserEntity와 연결, 사용자와의 일대다 관계 설정.@PrePersist
를 활용하여 결과 생성일을 현재 시간으로 자동 초기화.@PrePersist
를 활용하여 통계 생성일을 현재 시간으로 자동 초기화.OneToMany
양방향 매핑으로 사용자와 결과, 일기 간의 관계 설정.프로젝트 설계 특징 요약: