개념이없다 ㅠㅠ

김지호·2022년 4월 11일
0

VO(Value Object) ≃ DTO (Data Transfer Object)

VO와 DTO는 동일한 개념이라고 합니다. 하지만 VO는 Read Only 속성을 가지고 있다.
VO는 특정한 비즈니스 값을 담는 객체이고, DTO는 계층간 통신 용도로 오고가는 객체를 말한다.

DTO 계층 간 데이터 교환을 위한 객체

왜 DTO와 Entity를 분리해서 사용해야 될까?

Entity(도메인,모델)는 데이터 베이스에서 영속성(불변)의 목적으로 사용하는 클래스이기 때문에 요청이나 응답 값을 전달하는 용도로의 사용은 올바르지 않다.

repository := dao (비슷함)

이 둘은 거의 같다고 생각하셔도 무방합니다. 좀 더 깊이있게 차이를 설명하면, repotiroy는 엔티티 객체를 보관하고 관리하는 저장소이고, dao는 데이터에 접근하도록 DB접근 관련 로직을 모아둔 객체입니다. 둘다 개념의 차이일뿐 실제로 개발할 때는 비슷하게 사용됩니다.

컨트롤러는 서비스에게 특정 업무를 요청하고, 서비스는 업무를 요청하며 필요한 자료를 DAO에게 요청하거나, 업무를 통해 나온 자료를 DAO를 통해 저장합니다.

밑에 레퍼런스 참조.

domain != vo

Entity vs Value Object

  • Entity 는 고유한 ID가 있지만, VO는 없다.

    • identity equality - Entity
      식별자 Id가 동일하면 같은 것으로 간주한다.
    • structural equality - Value Object
      모든 구성원이 일치하는 경우 두객체는 동일한 것으로 간주한다.
    • reference equality - Both
      메모리에서 동일한 주소를 참조하는 경우 동일한 것으로 간주한다.
  • Entity는 고유한 ID가 있지만, VO는 없다.

  • VO는 혼자서는 존재 할 수 없다.(Entity에 속해야만 존재 가능) = DB에 VO테이블 혼자 존재 할수 없다.

  • VO는 변경할수 없다. Entity는 변경 가능.

  • To recognize a value object in your domain model, mentally replace it with an integer.

  • Always prefer value objects over entities in your domain model.


References

https://gmlwjd9405.github.io/2018/12/25/difference-dao-dto-entity.html

profile
To be Developer

0개의 댓글

관련 채용 정보