[Spring] 3 Layer Architecture

이병수·2024년 1월 22일
0

스프링 정리

목록 보기
6/24
post-custom-banner

3계층


전반적인 흐름

하나의 클래스에 데이터를 받아와서 로직을 구현하고 데이터베이스에 저장하는 것은 매우 가독성이 떨어지고, 복잡한 코드이다.

따라서 서버 개발자들은 서버의 처리과정이 비슷하여, 처리과정을 크게 Controller, Service, Repository 3개로 분리를 하였다.

  1. 웹 브라우저에서 데이터를 요청한다.

  2. 요청 받은 데이터를 Controller 클래스에 받아와서 Service로 넘겨준다.

  3. Service에 받은 데이터를 가공하여 데이터를 DB에 저장하기 위해 Repository 클래스로 넘겨준다.

  4. Repository는 가공된 데이터를 DB에 연결시켜 데이터를 저장한다.

만약, 여기서 특정 요청에 대한 응답값이 필요하다면 Repository 클래스에서부터 성공했다는 메세지라던지, 실패했다는 메세지를 다시 역순으로 반환하면 된다.


주의!

이때, 데이터를 넘겨주거나 반환할 때 DTO 방식을 통해 넘겨주자.
순수하게 전달하고 싶은 데이터만 전달하기 때문에 외부에 데이터에 대해 노출될 일이 없다.


클라이언트 - Controller - Service

  • 브라우저(클라이언트)에서 데이터를 요청하면 HTTP 프로토콜 규칙에 맞춰서 Controller에 데이터가 전달된다.

  • Front Controller 패턴 (DispatcherServlet)을 통해 데이터를 처리해서 Controller에 들어온다.

  • 요청에 대한 로직 처리는 Service에 전담한다.

    • Request에 데이터가 있다면 해당 데이터를 Service에 전달한다.

    • 다만, DTO를 통해 감싸서 전달한다. (순수 데이터만)

    • Service에 요청이 처리 완료가 되면 결과를 브라우저(클라이언트)에게 응답한다.


Service - Repository

  • 사용자의 요구사항을 Service 클래스에서 처리한다.

  • DB 저장 및 조회가 필요할 경우 Repository에게 요청을 한다. (가공된 데이터를 보냄)

  • 이때, 데이터를 DTO를 통해 감싸서 전달한다.


Repository - DB

  • DB 관리를 한다.

  • CRUD(Create,Read,Update,Delete) 작업을 처리하게 된다.

profile
백엔드 개발자가 되고 싶어요
post-custom-banner

0개의 댓글