Java/Java > Basics

Java > 패키지 구조

Krevis 2025. 11. 17. 08:30

 

Layer-based 구조 (계층별 구조)

com.example.app
 ├─ controller
 │   ├─ UserController.java
 │   └─ ProductController.java
 ├─ service
 │   ├─ UserService.java
 │   └─ ProductService.java
 └─ dao
     ├─ UserDao.java
     └─ ProductDao.java

 

  • 장점
    • 계층 책임이 명확함
    • MVC 패턴과 직관적으로 매칭
  • 단점
    • 도메인 단위로 변경/확장하기 어렵고, 특정 기능 수정 시 여러 패키지를 오가야 할 수 있음
    • 규모가 커지면 패키지 간 의존성 관리가 어려움

 

Feature/Domain-based 구조 (도메인별 구조)

com.example.app
 ├─ user
 │   ├─ UserController.java
 │   ├─ UserService.java
 │   └─ UserDao.java
 └─ product
     ├─ ProductController.java
     ├─ ProductService.java
     └─ ProductDao.java

 

 

  • 장점
    • 특정 도메인 관련 코드가 한곳에 모여 있어 유지보수가 쉬움
    • 마이크로서비스 구조나 모듈화에 유리
  • 단점
    • 공통 계층 코드가 중복될 수 있음
    • 계층별 책임이 바로 안 보여 초반에는 구조 이해가 어려울 수 있음

 

 

'Java > Java > Basics' 카테고리의 다른 글

Java > Checked 예외의 재정의  (0) 2024.09.09
Java > Memory structure  (0) 2024.09.04