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) 자세한 내용은 구글링해서 알아봅시다.
- 프레젠테이션 계층 (Presentation layer) - UI 계층 (UI layer)
- 애플리케이션 계층 (Application layer) - 서비스 계층 (Service layer)
- 비즈니스 논리 계층 (Business logic layer) - 도메인 계층 (Domain layer)
- 데이터 접근 계층 (Data access layer) - 영속 계층 (Persistence layer)
'기타' 카테고리의 다른 글
[WSL] wsl2 zsh 설치하기 (0) | 2021.03.11 |
---|---|
[CS] API 란? (0) | 2021.02.26 |
VSCode에서 eslint delete '␍' (prettier/prettier) error 해결방법 (0) | 2021.02.23 |
어휘분석, 구문분석, 의미분석 (0) | 2021.02.09 |
매니지드(Managed)와 언매니지드(Unmanaged)란? (4) | 2021.01.09 |