DTO, VO, DAO, Entity 간단한 개념

chanto11

·

2021. 3. 4. 10:53

DTO (Data Transfer Object) : 각 계층간 데이터 교환을 위한 객체
(ex. View <-(DTO)-> Controller <-(DTO)-> Service )

- 로직을 가지지 않는 순수 데이터 객체

- getter/setter 메서드만 갖는다.

(DB 데이터를 임의로 변경할 필요가없어 setter가 없고 이를 대신에 생성자(constructor)에서 값을 할당한다.)


VO (Value Object) : DTO와 동일한 개념 + Read only 속성

- VO === 특정한 비즈니스 값 , DTO === Layer간 통신 용도 객체


DAO (Data Access Object) : 실제 DB에 접근하는 객체 (ex. Service -(DAO)-> DB )

- Service와 DB를 연결하는 역활.

- SQL을 사용하여 DB 접근한 후 적절한 CRUD API를 제공.


Entity Class (domain package) : 실제 DB 테이블과 매칭될 클래스 

- Domain Logic만 가지고 있어야 하고 Presentation Logic을 가지고 있어선 안된다. (주로 Service Layer에서 사용)

※ Entity 와 DTO를 분리하는 이유

   - View 와 DB 역활을 철저하게 분리하기 위해.

   - Entity 클래스 보호 (테이블과 매핑되기 때문).

   - Domain Model의 순수성을 지키기 위해. ( 독립성을 지키기위함. )

   - Domain Model을 조합해서 사용하기 위해.

   - DTO === copy(Domain Model) + Presentation Logic
   - Domain Model 은 Persistence 만을 위해서 사용.

 

※  계층형 패턴(Layer Pattern) 자세한 내용은 구글링해서 알아봅시다.

Layer Pattern

  • 프레젠테이션 계층 (Presentation layer) - UI 계층 (UI layer)
  • 애플리케이션 계층 (Application layer) - 서비스 계층 (Service layer)
  • 비즈니스 논리 계층 (Business logic layer) - 도메인 계층 (Domain layer)
  • 데이터 접근 계층 (Data access layer) - 영속 계층 (Persistence layer)