caffeine-library / Domain-Driven-Design

🌱 에릭 에반스의 '도메인 주도 설계'를 읽는 스터디
4 stars 0 forks source link

[question] DTO, DAO, VO, Entity 에 대한 구분을 어떻게 하고 계시나요? #26

Closed leejaeseung closed 1 year ago

leejaeseung commented 1 year ago

질문

책에서 Entity, VO 등의 설명이 나오는데 실제로 다른 분들은 DTO, DAO, VO, Entity 를 어떻게 구분하고 계시나요?

Entity 와 DAO 는 명확하게 정의된다고 생각하는데, DTO 와 VO 개념이 잘 정리되지 않았습니다. 아무래도 함수형으로 코드를 작성하다보니 모든 객체가 불변이기 때문에 DTO 와 VO 의 경계가 모호해 지더라구요. 처음엔 DTO 와 VO 를 아예 다른 종류의 실체라고 생각했는데, 최근 들어선 추상적인 개념이라는 생각이 들었습니다.

어떤 객체에 "이건 DTO 야" , "이건 VO 야" 라고 정의하는게 아니라 Data Trasfer 를 위해 사용되면 DTO , 유의미한 값을 포장한 객체라면 VO 라고 생각하니 좀 더 정리가 되는 듯 했습니다.

연관 챕터

24

kth990303 commented 1 year ago

저는 현재 아래와 같이 생각중입니다.

Entity: 식별성이 필요한 객체 VO: 식별성이 필요하지 않은 객체이자, 어떤 객체의 프로퍼티(필드)로 쓰이는 객체 DTO: Data Transfer을 목적으로 하며 식별성이 필요하지 않은 객체 DAO: 데이터 영속화를 위한 로직이 포함된 객체이자, Entity, VO, DTO와 다르게 Spring bean(싱글톤)으로 관리되어야 할 객체

개인적으로는 책 덕분에 Entity, VO 개념 정의를 더 명확히 할 수 있었어요. 해당 이슈에 대한 제 생각은 이렇고, 다른 분들의 생각도 궁금합니다 :)

JasonYoo1995 commented 1 year ago
leejaeseung commented 1 year ago

repository vs dao https://www.inflearn.com/questions/111159/domain%EA%B3%BC-repository-%EC%A7%88%EB%AC%B8

repository vs adaptor https://stackoverflow.com/questions/68705515/what-is-the-difference-between-adapter-and-repository-pattern

kth990303 commented 1 year ago

DAO vs Repository

DB access 뿐만 아니라 외부 api 호출 등에 대한 작업을 수행하는 객체도 Repository로 볼 수 있을까?

MSA 환경에서 외부 aggregate에서 가져온 데이터가 Entity인지 VO인지 등에 대한 여부를 알아야 할 필요가 있을까?

Repository vs Adapter