스프링에 대해 공부하다 보니, 패키지 구조 또한 정말 중요하다는 것을 느낍니다.
해서, 계층형 패키지 구조와 도메인형 패키지 구조의 모양과 장단점을 간단히 정리하고자 합니다.
1. 계층형 패키지 구조
controller
⎿ UserController
⎿ LottoController
service
⎿ UserService
⎿ LottoService
dto ...
domain ...
장단점
- 패키지만 보면 전체적인 구조 파악 가능합니다.
- 계층별 응집도가 좋습니다.
- but 도메인별 응집도는 낮습니다.(하나의 패키지 안에 여러 도메인이 섞여있음.)
- 규모가 커지면 가시성이 떨어집니다. <- 사실상 요게 제일 문제긴 하죠
2. 도메인형 패키지 구조
User
⎿ UserController
⎿ UserService
⎿ UserDto
...
Lotto
⎿ LottoController
⎿ LottoService
⎿ LottoDto
...
장단점
- 도메인별 응집도가 높습니다.
- 유스케이스별로 세분화해서 표현 가능합니다.
- but 전반적인 흐름은 파악하기 어렵습니다.
- 개발자 관점에 따라 패키지 두는 위치가 바뀔 수 있습니다. <- 이 부분이 가장 헷갈리는 것 같습니다. 책임을 어디에 둬야 할 지....
결론
어느 것을 써야한다 ! 뭐 이런건 아니지만 저는 개인적으로 도메인형 패키지가 좋은 것 같습니다. 게시판 만들기만 해도 클래스가 정말 많이 생기게 되는데, 도메인형 패키지를 사용하면 구조가 복잡하지 않고 어떤 로직이 어떠한 도메인에 들어가 있는지 파악하기 쉬웠던 것 같아요.
'스프링 > 개념' 카테고리의 다른 글
JPA 에 관하여 [자바 ORM 표준 JPA 프로그래밍] (0) | 2024.09.10 |
---|---|
Spring 예외처리 기본 원리와 어노테이션 (0) | 2024.09.09 |
HTTP 상태 코드 정리 (0) | 2024.09.09 |
HTTP 메서드에 관해서 (0) | 2024.09.09 |
REST API 설계 규칙! (0) | 2024.09.09 |