java

MVC의 계층 과 역활

하루이2222 2024. 8. 24. 20:41

1. 프레젠테이션 계층 (Presentation Layer)

  • 역할: 사용자와 상호작용하는 UI 또는 API를 제공한다. 웹 애플리케이션의 경우, 컨트롤러가 이 계층의 대표적인 구성 요소이다.
  • 데이터 이동: 사용자가 입력한 데이터를 받아 서비스 계층에 전달하고, 서비스 계층으로부터 받은 데이터를 사용자에게 반환한다.

2. 서비스 계층 (Service Layer)

  • 역할: 비즈니스 로직을 처리한다. 프레젠테이션 계층에서 받은 요청을 처리하고, 필요한 경우 데이터 접근 계층에 접근하여 데이터를 조회하거나 수정한다.
  • 데이터 이동: 프레젠테이션 계층으로부터 받은 요청 데이터를 비즈니스 로직에 따라 처리하고, 필요한 데이터를 데이터 접근 계층으로부터 가져와 조작한 후, 결과를 프레젠테이션 계층으로 반환한다.

3. 데이터 접근 계층 (Data Access Layer)

  • 역할: 데이터베이스와 상호작용하여 데이터를 조회, 저장, 업데이트, 삭제하는 작업을 담당한다. 이 계층의 대표적인 구성 요소는 리포지토리(Repository)이다.
  • 데이터 이동: 서비스 계층으로부터 요청받은 데이터를 데이터베이스에 저장하거나, 데이터베이스에서 데이터를 조회하여 서비스 계층으로 반환한다.

데이터 이동 경로

  1. 사용자 입력 → 프레젠테이션 계층 (컨트롤러)
    • 사용자가 입력한 데이터를 컨트롤러가 받는다. 이 때 데이터를 DTO로 받는 경우가 많다.
  2. 프레젠테이션 계층 → 서비스 계층
    • 컨트롤러는 사용자의 요청을 처리하기 위해, 데이터를 서비스 계층에 전달한다. 이 과정에서 데이터를 DTO로 변환하여 전달할 수 있다.
  3. 서비스 계층 → 데이터 접근 계층
    • 서비스 계층에서 비즈니스 로직을 처리하는 도중 데이터베이스와 상호작용이 필요하면, 데이터 접근 계층(리포지토리 등)에 데이터를 전달한다. 이 때 엔티티(Entity)를 사용한다.
  4. 데이터 접근 계층 → 서비스 계층
    • 데이터베이스에서 조회한 데이터를 서비스 계층으로 반환한다. 서비스 계층은 이 데이터를 필요에 따라 가공한다.
  5. 서비스 계층 → 프레젠테이션 계층
    • 서비스 계층에서 처리된 결과를 프레젠테이션 계층으로 반환한다. 이 때 데이터를 다시 DTO로 변환하여 반환할 수 있다.
  6. 프레젠테이션 계층 → 사용자
    • 컨트롤러는 서비스 계층으로부터 받은 데이터를 사용자에게 응답으로 반환한다.

DTO가 필요한 부분

  1. 프레젠테이션 계층에서의 입력 데이터 처리
    • 사용자 입력 데이터를 컨트롤러에서 받을 때, 이 데이터를 직접 엔티티로 받는 것은 좋지 않다. DTO를 사용하여 필요한 데이터만 캡처하고, 유효성 검사를 할 수 있다.
  2. 서비스 계층과 프레젠테이션 계층 간의 데이터 전달
    • 서비스 계층에서 프레젠테이션 계층으로 데이터를 반환할 때, 비즈니스 로직을 처리한 결과를 DTO로 변환하여 전달하는 것이 일반적이다. 이는 보안과 데이터 무결성 측면에서 중요하다.
  3. 외부 API와의 통신
    • 외부 API와 통신할 때도 DTO를 사용하여 데이터를 주고받는다. 이를 통해 API 응답을 캡슐화하고, 내부 데이터 구조와 분리할 수 있다.

요약

  • DTO는 주로 프레젠테이션 계층과 서비스 계층 간의 데이터 전달에 사용된다.
  • 데이터 접근 계층과 서비스 계층 간에는 엔티티가 주로 사용된다.
  • DTO를 통해 데이터를 캡슐화하고, 엔티티를 직접 노출하지 않음으로써 보안과 유지보수성을 높일 수 있다.

'java' 카테고리의 다른 글

도메인 계층 과 비니지스 로직  (0) 2024.08.24
[자바] String Class 의 불변성  (0) 2024.08.18
[자바] equals overriding 과 hash code  (0) 2024.08.11
자바의 static 과 final  (0) 2024.07.28
자바의 메모리 구조 와 할당  (0) 2024.07.28