CS
Entity, VO, DTO
S2채닝S2
2023. 1. 30. 15:53
Entity
- 다른 엔터티와 구별 가능한 식별자를 가짐
- 시간의 흐름에 따라 지속적으로 변경됨
- 예: 주문: 상태가 변경: 주문 진행/완료/취소 등 / 고객정보: 아이디/닉네임/주소/패스워드 등 변경됨
VO: Value Object
- 값 객체
- 각 속성이 개별적으로 변화하지 않고 값 그 자체로 고유한 불변 객체
>> Entity가 Id를 가진다면 VO는 값의 조합으로 고유성을 가진다. VO는 한 번 만들어지면 그 내용은 불변이다
>> 예: 100원, 500원 동전
- 값이 불변이기 때문에 setter가 존재할 수 없다.
- VO는 getter와 함께 비즈니스 로직도 포함할 수 있다.
VO가 불변값을 가진다는 의미
Entity는 고유한 VO를 가진다. Entity가 사라진다고 했을 때, Entitiy 자체가 사라지는 것이지 주문자, 주문 상품, 배송지(주소)가 사라지거나 변경되지는 않는다.
<대전에 사는 홍길동이 파란색 티셔츠를 구매했습니다>
Entity: 주문
- 주문번호(id): 57891601271
VO
- 주문자: 홍길동
- 배송지: 대전광역시 00로 00번길 00-0
- 주문 상품: 파란색 티셔츠
위의 경우에서, 만약 홍길동이 주문을 취소한다면 해당 주문이 삭제되는 것이지 '홍길동', '대전광역시 00로 00번길 00-0', '파란색 티셔츠' 그 자체가 사라지지는 않는다. 주문이 변경되어도 마찬가지이다. 따라서 VO는 불변이다.
DTO(Data Transfer Object)
- 데이터를 전달하기 위한 객체
- 주로 view와 Controller사이에서 데이터를 주고받을 때 사용
- getter/setter 메소드를 포함하고, 그 외의 로직은 포함하지 않는다.