Domain와 Entity의 차이
- Domain과 Entity의 차이를 알아보기 전에 Layered Architecture에 대해서 알아보겠습니다.
1. Layered Architecture (계층화 아키텍쳐)
- DTO는 계층간 데이터 교환을 위해 사용되는 객체로, 계층으로 이루어진 아키텍쳐인 Layered Architecture에서 사용됩니다.
- Layered Architecture도 아키텍쳐 스타일 중 하나로, 비슷한 기능의 모듈과 컴포넌트를 수평한 레이어로 구성하여, 각 레이어는 애플리케이션에서 특정할 역할을 수행합니다. 각 레이어별로 관심사를 분리하는데 목적이 있습니다.
관심사 분리를 통해 각 레이어간 독립적 개발을 용이하게 하고, 설계의 유연성을 높일 수 있습니다.
2. 클린 아키텍쳐도 Layered Architecture인가?
- Layered Architecture는 3-tier 아키텍처로 Presentation Layer, BusinessLogic Layer, Data Access Layer 3개의 레이어로 구성된 아키텍쳐입니다.
- 클린 아키텍쳐도 Layered Architecture를 구현한 아키텍쳐 중 하나입니다.
- 그러나 3-tier와는 다르게 DomainLayer(Entity)를 계층의 중심에 두고 있는 형태입니다.
3. Domain
- 도메인은 일반적인 요구사항, 전문 용어, 그리고 컴퓨터 프로그래밍 분야에서 문제를 풀기 위해 설계된 어떤 소프트웨어 프로그램에 대한 기능성을 정의하는 연구의 한 영역입니다.
즉, 도메인은 기획의 요구사항을 구현하고, 문제를 풀기 위해 설계된 소프트웨어 프로그램의 기능성을 정의하는 영역이라고 설명합니다.
* 도메인이란 사용자가 이용하는 앱 기능, 회사의 비즈니스 로직을 정의하는 영역이라고 이해해 볼 수 있습니다. *
4. Entity
- Entity는 일반적으로 존재하는 것, 즉 실체를 의미합니다.
- 다양한 컨텍스트에서 Entity의 의미는 다양하게 구체화 되어 사용됩니다.
즉, 사용되는 상황에 따라 다른 의미를 갖고 있습니다.
5. 차이점
- Domian은 비즈니스 영역을 추상적으로 나타내는 개념이고, Entity는 Domain 내에서 실제 개별 객체나 개념을 나타냅니다.
즉, Domain은 서비스를 대표하는 개념이고 Entity는 Domain 내에 식별 가능한 객체를 뜻합니다.
6. Entity in DTO
- 실제 DB의 테이블과 매핑되는 객체, identifier로 구분됩니다. (DB관련 영속성 엔티티)
- 비즈니스 로직을 포함하는 도메인 엔티티
- DTO는 Entity의 변경을 최소화 하기 위해 탄생했습니다. 따라서 DTO에서 Entity를 사용할 때, 도메인 엔티티가 될 수도, DB의 영속성 엔티티가 될 수도 있습니다.
7. Entity in 클린 아키텍쳐
- 전사적 비즈니스 규칙을 캡슐화합니다. 메서드를 가지는 객체가 될 수도 있고, 데이터 구조체, 함수가 될 수도 있습니다.
가장 높은 수준의 규칙을 캡슐화 하고 외부 변화에 의해 가장 변하지 않는 부분입니다. - 비즈니스 로직을 캡슐화한 객체라는 의미로 사용됩니다.
'JAVA > Spring' 카테고리의 다른 글
[JAVA / Spring] - Spring MVC Life Cycle (0) | 2024.04.01 |
---|---|
[JAVA / Spring] 스프링부트 실행 시 나타나는 배너를 바꿔보자 (0) | 2024.03.15 |
[JAVA / Spring] - Optional이란? (0) | 2024.02.15 |
[JAVA] - Spring 용어 정리 (0) | 2023.09.26 |
[JAVA] - Spring과 Spring boot의 차이점 (0) | 2023.09.14 |