처음에 든 의문점은 기존의 MVC의 Controller에서 Service로 왜 또 분리하였는가? repository는 무엇인가? 였다.
기존의 MVC의 Controller에서 Service로 왜 또 분리하였는가?
첫번째 의문점을 해결하기 위해서는 Controller와 Service의 차이점부터 명확히 알아야 했다
즉, Model → Service → Controller → View 의 로직이 발생하는 것
음.. 좀더 Controller와 Service에 대한 역활이 명확하게 나눠서 지지않은 나를 이해시키기 위해 추가 설명을 더 해보자면,😱
질문 많은 나의 뇌는 질문을 다시 막 던진다. ‘
Q. 기존의 Controller에서 그냥 비지니스 로직까지 다 하면 안되는 건가? 분리하는게 더 복잡한 거 아니예요??’
A . 만약 상품 페이지에서 클라이언트가 한 상품에 대해 찜하기 요청을 했어요. 그럼 위의 순서대로 한다면, controller는 판단하고 service는 찜하기 행동을 위한 어떠한 비지니스 로직들을 하겠죠? 예를 들면, 이전에 찜을 해놓은 상품인지 확인해서, 이전에 찜해놓은 기록이 있는데도 다시 클릭한것이니 찜을 다시 취소하고, 처음 찜한거면 디비에도 반영해야 하고 등등 많은 일들이 있죠.
근데 만약 " Serive를 만드는 과정이 너무 귀찮아서 Service 없이 Controller에서 이것들을 그냥 다 처리하게 하려고 한다면?"
처음에는 문제 없을 것인데 상품 페이지 말고도 인기상품페이지, 행사목록페이지 등 다양한 조건의 페이지가 다시 등장하면 찜하기 행동의 비지니스 로직들을 컨트롤러 속의 매페이지마다 똑같이 다 써줘야 하는 더 엄청난 귀찮음이 생겨요. 한번 수정하려면 일일히 다 찾아서 다 수정해야 하고요. 그냥 코드를 재활용하고, 수정도 한번에 쫙 하는게 낫지 않을까요?
즉, 코드의 재사용성(중복 코드 방지), 유지보수 용이의 이유로 분리하는 것이다
repository는 무엇인가?
즉 , Repository → Service → Controller → View 의 로직이 생성된다. MVC 패턴에서 Model과 Repository는 유사하다.