MVC (Model View Controller)
VIEW

- 서버사이드 렌더링 : 서버측에서 View를 구현하여 데이터렌더링까지 진행.
현재 VIEW를 사용하는가?

- 현재는 프론트 없이 VIEW가 존재하지 않는 API만을 개발하고있음.
Layer 분리에 대해
- Layer는 관심사의 집합.

프레젠테이션 레이어
- 클라이언트의 요청을 받고 알맞는 응답을 도출
- 요청의 분해 및 응답에 중점을 둠 (로직 및 DB의 접근등을 하지않음)
- 요청정보가 서비스에서 요구하는 형식과 일피하는지 검증 및 가공
비즈니스 레이어
- 해당 기능의 핵심적인 비즈니스 로직이 포함
- 하나의 로직은 하나의 트랜잭션 단위로 이루어짐.
- APP의 세부작업을 가짐
- 요청정보의 유효성 및 접근권한을 확인.
데이터 액세스 레이어
- 데이터를 저장,수정,삭제하는 DB와 맞닿는 곳
- 도메인 객체를 영속화 하고 쿼리의 결과를 통한 영속성 객체를 바탕으로 서비스레이어에 전달.
비즈니스 레이어에 로직이 전부 들어있어야 하는가?
- 서비스레이어에서 직접 책임을지는게 아닌 DTO 혹은 Entity에서 맞는 자료를 검증하게끔 진행이 가능 (명령을 하는 역할)
결론
- 서비스레이어는 절대 만능 클래스가 되어선 안됌.
- 서비스를 조합 및 Entity를 연결하는 역할.
- 서비스에 핵심 로직을 구현하기 보단 로직의 대한 상태값을 가지고있는 모델단에서 처리를하는게 올바른 형태.