Skip to content

패키지 구조 개선 - 업무 도메인 단위 패키징 #29

@5y1ee

Description

@5y1ee

개선 내용

패키지 구조를 업무 도메인 별로 나누도록 수정.

현재 구조

현재는 페이지를 기준으로

  • 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
  • 장점

전체 구조를 한눈에 파악하기 쉽고, 작은 프로젝트에서 관리가 간편함

  • 단점

규모가 커지면 각 계층에 클래스가 너무 많아져서 도메인(업무/엔티티)별 흐름 파악이 어려움

개선 방법

도메인 별 패키징 방법으로 수정할 것.

Metadata

Metadata

Assignees

Labels

Type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions