프로젝트

Layered Architecture

Z00_HWAN_99 2024. 8. 13. 14:41
728x90
반응형

자바 프로젝트를 진행할 때 자주 사용되는 아키텍처 패턴 중 하나가 "Layered Architecture"입니다. 이 패턴에서는 각 역할에 따라 코드를 여러 레이어(계층)로 나누고, 각 레이어가 서로 상호작용하면서 어플리케이션을 구성합니다. 아래는 각 계층의 개념, 용도, 그리고 서로의 연관관계에 대한 설명입니다.

DTO (Data Transfer Object)

  • 개념: DTO는 데이터를 전송하기 위한 객체입니다. 주로 네트워크 간의 통신이나 레이어 간의 데이터 교환을 위해 사용됩니다. 이 객체는 순수하게 데이터만 담고 있으며, 로직을 포함하지 않습니다.
  • 용도: 클라이언트와 서버 간의 데이터 교환이나, 컨트롤러와 서비스 간의 데이터 전송을 위해 사용됩니다.
  • 연관관계: DTO는 주로 서비스 계층에서 사용되며, 서비스 계층은 DTO를 받아 비즈니스 로직을 처리하거나 데이터를 반환할 때 DTO를 사용하여 데이터를 전달합니다.

Domain (또는 Entity)

  • 개념: Domain 객체는 비즈니스 로직을 포함한 객체로, 어플리케이션의 핵심 비즈니스 개념을 나타냅니다. 데이터베이스의 테이블과 매핑되는 엔티티로 표현될 수도 있습니다.
  • 용도: 데이터베이스와 직접적으로 상호작용하며, 서비스 계층에서 비즈니스 로직을 구현할 때 사용됩니다. 도메인 객체는 상태와 행동을 함께 가지며, 비즈니스 규칙을 담고 있습니다.
  • 연관관계: Domain 객체는 Repository에서 CRUD 작업을 처리하고, 서비스 계층에서 도메인 객체의 상태를 변경하거나 비즈니스 로직을 처리합니다.

Service

  • 개념: 서비스 계층은 비즈니스 로직을 처리하는 역할을 합니다. 다양한 도메인 객체들을 활용하여 비즈니스 요구사항을 구현하고, 여러 레이어 간의 상호작용을 관리합니다.
  • 용도: 클라이언트의 요청을 처리하기 위해 필요한 비즈니스 로직을 구현합니다. 예를 들어, 데이터를 처리하고, 다양한 도메인 객체를 조작하며, 외부 API와 통신하거나, 트랜잭션을 관리하는 작업 등을 포함합니다.
  • 연관관계: 서비스는 컨트롤러에서 받은 요청을 처리하고, 필요한 경우 레포지토리와 상호작용하여 데이터베이스에서 데이터를 가져오거나 저장합니다. 또한, 서비스 계층은 비즈니스 로직을 처리하는 동안 DTO와 도메인 객체를 주로 사용합니다.

Repository(DAO)

  • 개념: Repository는 데이터베이스와의 상호작용을 담당하는 계층입니다. 주로 데이터 CRUD(Create, Read, Update, Delete) 작업을 수행합니다.
  • 용도: 데이터베이스에서 데이터를 조회하거나, 저장, 수정, 삭제하는 등의 작업을 처리합니다. Spring Data JPA 같은 ORM(Object-Relational Mapping) 프레임워크를 사용하여 구현됩니다.
  • 연관관계: Repository는 도메인 객체를 기반으로 데이터베이스와 상호작용하며, 서비스 계층에서 이 레포지토리를 호출하여 데이터베이스 작업을 수행합니다.

Controller

  • 개념: 컨트롤러는 사용자 요청을 처리하고, 적절한 서비스 계층을 호출하여 결과를 반환하는 역할을 합니다. 주로 웹 어플리케이션의 경우, HTTP 요청을 받아들여 응답을 반환하는 역할을 합니다.
  • 용도: 클라이언트(주로 웹 브라우저 또는 API 클라이언트)로부터의 HTTP 요청을 처리하고, 요청에 따라 적절한 서비스를 호출합니다. 또한, 서비스로부터 받은 데이터를 DTO를 통해 클라이언트에게 반환합니다.
  • 연관관계: 컨트롤러는 서비스 계층과 직접적으로 상호작용하며, DTO를 사용하여 데이터를 주고받습니다.

서로의 연관관계

  • Controller ↔ Service: 컨트롤러는 클라이언트의 요청을 받아 서비스를 호출합니다. 서비스는 비즈니스 로직을 처리하고 그 결과를 컨트롤러에게 반환합니다.
  • Service ↔ Repository: 서비스 계층은 필요한 데이터를 조회하거나 저장하기 위해 레포지토리를 호출합니다. 레포지토리는 데이터베이스와 상호작용하여 도메인 객체의 CRUD 작업을 처리합니다.
  • Service ↔ Domain: 서비스는 도메인 객체를 활용하여 비즈니스 로직을 구현하고, 도메인 객체의 상태를 변경하거나 검증하는 등의 작업을 수행합니다.
  • Service ↔ DTO: 서비스는 DTO를 사용하여 데이터를 외부로 전송하거나, 컨트롤러로부터 받은 데이터를 처리합니다.
728x90
반응형

'프로젝트' 카테고리의 다른 글

WMS(창고 관리 시스템) 프로젝트  (5) 2024.10.19
WMS(Warehouse Management System) 타당성 조사  (0) 2024.08.09
물류 시스템의 이해  (2) 2024.07.30