1. architecture 정리
controller
- endpoint에 대한 명확한 입력과 출력 처리
- 상태에 대한 전환 처리
- 자원의 흐름이 명확한 http method, RESTful API 설계
- request 요청 검증과 response 데이터 변환에 집중
PUT /api/students
PATCH /api/students/name // 특정 기능에 대해 수정
service
- 도메인의 책임과 역할에 집중된 정확한 비즈니스 로직 처리
- 객체지향 원칙 준수하며, 단위 테스트가 가능하도록 개발
- 자신의 도메인 repository와 DI함으로써 다른 도메인의 Service는 비즈니스 로직과 데이터 접근 캡슐화
- 순환 참조는 서비스 목적 분리를 통해 충분히 해결 가능
- 비즈니스 규칙을 검증하는 경우 공통 메서드나 클래스를 만들어 반복 코드를 줄임
- 요수사항과 기획 내용이 정확히 투영될 수 있는 비즈니스 로직 작성
repository
- entity 객체와의 직접적인 연결로인 만큼 검증된 데이터로 명확한 데이터 흐름 처리
- 복잡한 데이터 처리 로직은 Service 계층에서 다루어야 하며, Repository는 DB와 관련된 최소한의 책임만을 수행
- 추상화된 데이터 접근 기능 활용