[스프링 부트] 3. MVC와 DTO

lhs's avatar
Nov 16, 2024
[스프링 부트] 3. MVC와 DTO
notion image

1. MVC

1. MVC란?

MVC는 Model-View-Controller의 약자이고, 소프트웨어 디자인 패턴 중 하나로 웹 애플리케이션이나 데스크탑 애플리케이션에서 많이 사용된다. 이 패턴은 애플리케이션을 세 가지 주요 컴포넌트로 분리해서 유지보수성과 확장성을 높이고, 기능 간의 독립성을 유지하는 데 도움을 준다.

2. 구조

  1. 모델(Model)
      • 애플리케이션의 비즈니스 로직과 데이터를 처리하는 부분.
      • 데이터베이스와의 상호작용, 데이터 처리 및 저장, 수정 등을 담당한다.
      • 모델은 뷰(View)와 컨트롤러(Controller)와 독립적으로 동작하므로, UI를 변경해도 모델은 영향을 받지 않는다.
  1. 뷰(View)
      • 사용자에게 보여지는 UI (User Interface)를 담당한다.
      • 모델에서 전달된 데이터를 디스플레이하는 역할을 하며, 사용자가 볼 수 있도록 정보를 화면에 출력한다.
      • 뷰는 비즈니스 로직을 처리하지 않고, 단지 데이터를 표현하는 역할만 한다.
  1. 컨트롤러(Controller)
      • 사용자의 입력을 처리하고, 이를 모델에 전달해서 비즈니스 로직을 처리하게 한다.
      • 컨트롤러는 사용자가 보낸 요청을 받아 적절한 모델을 업데이트하거나 새로운 뷰를 선택해서 화면에 보여준다.
      • 즉, 사용자 요청을 처리하고, 모델과 뷰를 연결하는 역할을 한다.

3. 흐름

  • 사용자가 뷰에서 버튼 클릭, 폼 제출 등으로 입력을 한다.
  • 컨트롤러는 이 입력을 처리하고, 필요에 따라 모델을 수정하거나 데이터를 요청한다.
  • 모델은 데이터를 처리하거나 수정하고, 그 결과를 컨트롤러에 반환한다.
  • 컨트롤러는 모델에서 받은 데이터를 바탕으로 적절한 뷰를 선택하고, 해당 뷰를 사용자에게 렌더링한다.

4. 장점

  • 구성 요소 분리: 비즈니스 로직(Model), UI(View), 애플리케이션 흐름(Controller)을 분리해 각각 독립적으로 개발하고 수정할 수 있다.
  • 유지보수 용이: 각 컴포넌트를 독립적으로 수정할 수 있어, 다른 부분에 미치는 영향을 최소화할 수 있다.
  • 재사용성: 모델과 뷰가 분리되기 때문에 동일한 모델을 여러 뷰에서 재사용할 수 있다.
  • 테스트 용이: MVC 구조에서는 각 컴포넌트를 독립적으로 테스트할 수 있어서, 테스트가 용이하다.

2. DTO

1. DTO란?

DTO(Data Transfer Object)는 계층 간 데이터 전송을 위한 객체로, 주로 네트워크나 애플리케이션 내에서 데이터를 전달하는 역할을 한다. DTO는 주로 비즈니스 로직이나 데이터베이스 엔티티(Entity)와는 별도로, 데이터 전송만을 위한 객체로 설계된다.

2. 사용하는 이유

  • 계층 간 분리
    • 비즈니스 로직과 데이터 전송 로직을 분리하여 유지보수성과 확장성 증가
    • 계층 간 독립적인 변경 가능
  • 데이터 전송 최적화
    • 네트워크나 프로세스 간 데이터를 효율적으로 전송
    • 필요한 데이터만 포함하여 성능 향상
  • 보안 및 캡슐화
    • 민감한 데이터나 내부 구현을 외부에 노출하지 않도록 보호
    • 필요한 정보만 전달하여 보안 강화
Share article

LHS's Study Space