각 클래스 별 역할
- Application : 라우팅, 고객이 올바른 컨트롤러를 만나도록 교통정리
- Controller(WiseSayingController) : 본인이 맡은 주제와 관련된 고객의 요구사항을 듣고, 처리 후 응답
- 처리를 할 때, 본인이 판단하지 못하는 것은 서비스에 물어보는 게 원칙
- 식당에서 점원의 역할이라고 보면 됨
- 고객을 만나서, 그들의 요청을 받고 처리해줌
- Service(WiseSayingService) : 핵심로직을 담당
- 서비스는 오직 컨트롤러의 요청에 의해서만 일을 함
- 식당에서 메인 요리사의 역할이라고 보면 됨
- 반대로 요청을 할 수 없음
- 테스트를 위해 static 보다는 객체로 만들어 쓰는게 좋음
- Repository(WiseSayingRepository) : 데이터의 저장/조회를 담당
- 리포지터리는 오직 서비스의 요청에 의해서만 일을 함
- 식당에서 재료담당 요리사의 역할이라고 보면 됨
- DB : 데이터의 영속저장/조회를 담당
- 보통 외부 프로그램으로 작동함
- 즉 개발자가 DB 프로그램을 구현하는 일은 없음
- 이미 구현되어 있음. 주로 MySQL, Oracle과 같은 제품이 많이 사용됨
- 즉 개발자가 DB 프로그램을 구현하는 일은 없음
- 식당에서 재료창고 관리자의 역할이라고 보면 됨
- DB는 오직 리포지터리의 요청에 의해서만 일을 함
- 보통 외부 프로그램으로 작동함
MVC 디자인패턴의 관점으로 봤을 때의 우리 프로그램의 구조
- Model : Entity, Service, Repository
- View : 콘솔 (콘솔 프로그램의 특성 상 어쩔 수 없이 Controller 에 View 로직이 섞여있음 / HTML or 콘솔)
- Controller : Controller