Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

패키지 구조(도메인형 구조 vs. 계층형 구조) #94

Closed
yoon-youngjin opened this issue May 8, 2022 · 1 comment
Closed

Comments

@yoon-youngjin
Copy link
Collaborator

yoon-youngjin commented May 8, 2022

패키지 구조는 크게 계층형, 도메인형 2가지 유형

계층형

└── src
    ├── main
    │   ├── java
    │   │   └── com
    │   │       └── example
    │   │           └── demo
    │   │               ├── DemoApplication.java
    │   │               ├── config
    │   │               ├── controller
    │   │               ├── dao
    │   │               ├── domain
    │   │               ├── exception
    │   │               └── service
    │   └── resources
    │       └── application.properties
  • 계층형 구조는 각 계층을 대표하는 디렉토리를 기준으로 코들들이 구성
  • 계층형 구조의 장점은 해당 프로젝트에 이해가 상대적으로 낮아도 전체적인 구조를 빠르게 파악할 수 있다.
  • 계층형 구조의 단점은 디렉토리에 클래스들이 너무 많이 모이게 된다.

도메인형

└── src
    ├── main
    │   ├── java
    │   │   └── com
    │   │       └── example
    │   │           └── demo
    │   │               ├── DemoApplication.java
    │   │               ├── coupon
    │   │               │   ├── controller
    │   │               │   ├── domain
    │   │               │   ├── exception
    │   │               │   ├── repository
    │   │               │   └── service
    │   │               ├── member
    │   │               │   ├── controller
    │   │               │   ├── domain
    │   │               │   ├── exception
    │   │               │   ├── repository
    │   │               │   └── service
    │   │               └── order
    │   │                   ├── controller
    │   │                   ├── domain
    │   │                   ├── exception
    │   │                   ├── repository
    │   │                   └── service
    │   └── resources
    │       └── application.properties

  • 도메인 디렉토리 기준으로 코드를 구성
  • 도메인 구조의 장점은 관련된 코드들이 응집해 있다.
  • 도메인 구조의 단점은 프로젝트의 이해도가 낮을 경우 전체적인 구조를 파악하기 어렵다.

현재 책에서 제공하는 코드는 계층형 패키지 구조로 되어있는데, 실제 현업에서는 도메인형 구조를 많이 선호한다고 합니다. 계층형 패키지 구조를 사용하면 프로젝트의 크기가 커졌을 경우에 Controller 패키지, Service 패키지에 너무 많은 클래스들이 모이게 되어서 불편하다고 하네요.

@myway00
Copy link
Contributor

myway00 commented May 10, 2022

와 ... 저 지금 프로젝트 조금 구현할 부분이 많아지고 있는데 Controller 패키지, Service 패키지에 너무 많은 클래스들이 모이게 되어서 불편 상황을 뼈저리게.. 느끼고 있었습니다..! 도메인형으로 한번 날 잡고 싹 리팩토링 해야겠네요 ㅎㅎ... (언제 다하지..?🤐)
아키텍처에 대한 좋은 정보 공유 너무 감사합니다! 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants