Entity
개념 : Entity는 비즈니스 도메인에서 식별 가능한 유일한 객체를 나타냅니다. 주로 데이터베이스와 연관되어 영속성(Persistence)을 가지고, 데이터베이스의 테이블과 매핑되는 개념입니다. 엔티티는 주로 도메인의 핵심 비즈니스 로직을 포함하고, 데이터를 가공하는 역할을 수행합니다.
특징:
- 식별자: 엔티티는 고유한 식별자를 가지고 있으며, 비즈니스 로직에 의해 식별됩니다.
- 영속성: 데이터베이스와 연관되어 영구적으로 저장될 수 있습니다.
- 비즈니스 로직: 엔티티는 비즈니스 도메인의 핵심 로직을 담당합니다.
용도:
- 비즈니스 도메인의 개념을 표현하고 데이터베이스와 매핑하여 영속적인 데이터 관리에 사용됩니다.
DTO (Data Transfer Object):
개념: DTO는 데이터 전송을 위한 객체로서, 여러 계층 간 데이터 교환을 위해 사용됩니다. 주로 웹 요청과 응답, 서비스 간 데이터 전달 등에 사용됩니다. DTO는 단순히 데이터를 보관하고 전달하기 위한 용도로 설계되며, 비즈니스 로직은 포함하지 않습니다.
특징:
- 데이터 전달: 주로 데이터 교환을 위해 사용되며, 비즈니스 로직을 포함하지 않습니다.
- 불변성: 일반적으로 DTO는 변경이 불가능하도록 설계되어야 합니다.
용도:
- 웹 요청과 응답, 서비스 간 데이터 전달 등의 데이터 전송을 위해 사용됩니다.
VO (Value Object):
개념: VO는 값 객체로서 개별 속성을 가지고 있는 불변 객체입니다. 엔티티와 달리 식별자를 가지지 않으며, 주로 값의 조합으로 식별됩니다. VO는 주로 불변성을 갖기 때문에 상태가 변하지 않으며, 비즈니스 로직을 가지고 있지 않습니다.
특징:
- 불변성: VO는 일반적으로 불변 객체로 설계되며, 상태가 변하지 않습니다.
- 값 기반 식별: VO는 주로 값의 조합으로 식별됩니다.
용도:
- 엔티티와의 복잡한 연산을 피하기 위해 값 객체로 사용됩니다. 주로 비교나 동등성 검사에 사용됩니다.
요약:
- Entity: 비즈니스 도메인을 표현하고 영속적인 데이터 관리에 사용됩니다.
- DTO: 데이터 전달을 위한 객체로서 단순히 데이터를 보관하고 전달하는 용도로 사용됩니다.
- VO: 값 객체로서 불변성을 가지며, 엔티티와 복잡한 연산을 피하는데 사용됩니다.