JAVA

[JAVA/SpringBoot] Controller, Service, Repository 역할 (1-12)★★

wonderson 2022. 5. 27. 23:21
반응형

[여기에 적은 거는 강의 내용을 다 적은게 아니라서 강의자료 보면서 이 게시글 참고하자.]

[스프링 심화 강의 1주차 12강 AllInOneController 의 역할 분리]

 

- springCore 프로젝트에서 실습

- 막간지식 : '자바 클래스명'과 '자바 파일 이름' 일치 해야 함

 

Controller, Service, Repository 역할

서버 개발자들은 서버에서의 처리과정이 대부분 비슷하다는 걸 깨닫고, 
처리 과정을 크게 3개로 분리했습니다. 
스프링에서 이미 구분해서 사용해 본적 있던 Controller, Service, Repository 입니다.

각 역할 별로 하는 일을 정리해 보죠.

1. Controller

  • 클라이언트의 요청을 받음
  • 요청에 대한 처리는 서비스에게 전담
  • 클라이언트에게 응답

 

2. Service

  • 사용자의 요구사항을 처리 ('비즈니스 로직') 하는 실세 중에 실세!!!
    • 현업에서는 서비스 코드가 계속 비대해짐
  • DB 정보가 필요할 때는 Repository 에게 요청

- Service는 DB정보가 필요하면 본인이 직접하는 것이 아니라 Repository에게 그 역할을 맡긴다.

DB에 관련된 역할은 Repository가 하고 그 결과를 가지고 와서 처리를 해주는 역할을 한다.

 

3. Repository

  • DB 관리 (연결, 해제, 자원 관리)
  • DB CRUD 작업 처리

 

전체적인 그림

- 전체적으로 보면

클라이언트에서 Controller로 Request가 가게 되면
-> Controller는 Service에게 역할 처리를 맡기고

-> 우리 실세 Service는 클라이언트 요청을 직접적으로 처리하는 역할을 하다가 DB에 관련된 역할이 필요하거나 DB정보가 필요하거나 (예시. DB 관심 상품)을 저장하거나 업데이트하거나

-> 이럴 때 Repository를 부른다.

[Repository에서 DB와의 연결을 가지고 처리를 한 뒤에 결과를 보내주면 그거를 우리 Service 실세가 모두 다 처리를 한 뒤에 그 다음에 Controller에게 그 결과를 보내준다.]

-> 그러면 Controller는 그걸 가지고 클라이언트에게 Response로 보내준다.

 

 

Quiz

아래 AllInOneController 의 순차적인 흐름에서 Controller, Service, Repository 기능을 구분해 보세요. 아래 그림을 다운로드 받아 각 역할 별로 체크해 보거나, 역할 별로 머릿 속으로 떠올려봐도 좋습니다. 중요한 건 아래 정답을 보지 않고 스스로 각 역할 별로 기능을 구분해 내는 노력을 해보는 것입니다.

 

내가 해본거

- 좀 틀렸다...

 

 

Quiz 정답

축하드립니다! 여러분은 스프링의 핵심에 한 발짝 가까이 가게 되었습니다. 스프링 프레임워크는 "객체지향" 설계 원칙을 잘 준수하여 설계되어 있기 때문입니다.

 

1) Controller

- 요청받고 응답하기

 

2) Service

- Service는 실세라서 Repository에게 역할을 시킨다.

- 전체적으로 Controller가 하는 역할 외에 다른 부분들은 사실 Service가 크게 맡고 있다.

- 굳이 나눠보자면 파란색 부분만 Service가 하고 있다.

-> 하지만 잊지 말아야 할 거 현업에서는 Service의 역할이 이거보다 훨씬 더 많다. 그리고 계속해서 증가해 나간다.
 이 점을 유념하자

 

3) Repository

반응형