1. 프레젠테이션 계층 (Presentation Layer)
- 역할: 사용자와 상호작용하는 UI 또는 API를 제공한다. 웹 애플리케이션의 경우, 컨트롤러가 이 계층의 대표적인 구성 요소이다.
- 데이터 이동: 사용자가 입력한 데이터를 받아 서비스 계층에 전달하고, 서비스 계층으로부터 받은 데이터를 사용자에게 반환한다.
2. 서비스 계층 (Service Layer)
- 역할: 비즈니스 로직을 처리한다. 프레젠테이션 계층에서 받은 요청을 처리하고, 필요한 경우 데이터 접근 계층에 접근하여 데이터를 조회하거나 수정한다.
- 데이터 이동: 프레젠테이션 계층으로부터 받은 요청 데이터를 비즈니스 로직에 따라 처리하고, 필요한 데이터를 데이터 접근 계층으로부터 가져와 조작한 후, 결과를 프레젠테이션 계층으로 반환한다.
3. 데이터 접근 계층 (Data Access Layer)
- 역할: 데이터베이스와 상호작용하여 데이터를 조회, 저장, 업데이트, 삭제하는 작업을 담당한다. 이 계층의 대표적인 구성 요소는 리포지토리(Repository)이다.
- 데이터 이동: 서비스 계층으로부터 요청받은 데이터를 데이터베이스에 저장하거나, 데이터베이스에서 데이터를 조회하여 서비스 계층으로 반환한다.
데이터 이동 경로
- 사용자 입력 → 프레젠테이션 계층 (컨트롤러)
- 사용자가 입력한 데이터를 컨트롤러가 받는다. 이 때 데이터를 DTO로 받는 경우가 많다.
- 프레젠테이션 계층 → 서비스 계층
- 컨트롤러는 사용자의 요청을 처리하기 위해, 데이터를 서비스 계층에 전달한다. 이 과정에서 데이터를 DTO로 변환하여 전달할 수 있다.
- 서비스 계층 → 데이터 접근 계층
- 서비스 계층에서 비즈니스 로직을 처리하는 도중 데이터베이스와 상호작용이 필요하면, 데이터 접근 계층(리포지토리 등)에 데이터를 전달한다. 이 때 엔티티(Entity)를 사용한다.
- 데이터 접근 계층 → 서비스 계층
- 데이터베이스에서 조회한 데이터를 서비스 계층으로 반환한다. 서비스 계층은 이 데이터를 필요에 따라 가공한다.
- 서비스 계층 → 프레젠테이션 계층
- 서비스 계층에서 처리된 결과를 프레젠테이션 계층으로 반환한다. 이 때 데이터를 다시 DTO로 변환하여 반환할 수 있다.
- 프레젠테이션 계층 → 사용자
- 컨트롤러는 서비스 계층으로부터 받은 데이터를 사용자에게 응답으로 반환한다.
DTO가 필요한 부분
- 프레젠테이션 계층에서의 입력 데이터 처리
- 사용자 입력 데이터를 컨트롤러에서 받을 때, 이 데이터를 직접 엔티티로 받는 것은 좋지 않다. DTO를 사용하여 필요한 데이터만 캡처하고, 유효성 검사를 할 수 있다.
- 서비스 계층과 프레젠테이션 계층 간의 데이터 전달
- 서비스 계층에서 프레젠테이션 계층으로 데이터를 반환할 때, 비즈니스 로직을 처리한 결과를 DTO로 변환하여 전달하는 것이 일반적이다. 이는 보안과 데이터 무결성 측면에서 중요하다.
- 외부 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 |