-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
개선 내용
패키지 구조를 업무 도메인 별로 나누도록 수정.
현재 구조
현재는 페이지를 기준으로
- user
- owner
- admin
나누고 있으나, 페이지 내부에서 공유하는 리소스는 VO, Controller, Service 등 전부 중복으로 만들어야 함.
예)
solfood/user/MenuVO.java
solfood/owner/MenuVO.java
이런 문제를 방지하기 위해 다음과 같은 방법으로 수정 가능
업무 도메인 별 구분
com.example.project
├─ domain
│ ├─ user
│ │ ├─ controller
│ │ ├─ service
│ │ ├─ repository
│ │ ├─ dto
│ │ └─ entity
│ ├─ product
│ │ ├─ controller
│ │ ├─ service
│ │ ├─ repository
│ │ ├─ dto
│ │ └─ entity
│ └─ ...
├─ global (공통)
├─ config
└─ util
- 특징
이 경우, 각 패키지 별로 접근하는 경로에 따른 Controller를 따로 구현해야함.
- 장점
도메인별 응집도가 높아지고, 도메인(업무, 테이블, 엔티티) 단위로 관리·확장·테스트가 용이함
각 도메인(예: user, product 등)의 흐름을 파악하기 쉽고, 도메인 간 의존성도 줄어듬
- 단점
처음 보는 사람은 전체 구조 파악이 어렵고, 설계자의 기준에 따라 경계가 애매한 클래스가 생길 수 있습니다.
기능별 구분
com.example.project
├─ controller
├─ service
├─ repository
├─ entity
├─ dto
└─ config
- 장점
전체 구조를 한눈에 파악하기 쉽고, 작은 프로젝트에서 관리가 간편함
- 단점
규모가 커지면 각 계층에 클래스가 너무 많아져서 도메인(업무/엔티티)별 흐름 파악이 어려움
개선 방법
도메인 별 패키징 방법으로 수정할 것.
Reactions are currently unavailable