728x90
- VO ( Value Obejct ) ( 읽기 전용 목적 )
: 값을 위한 클래스 - ‘getter'를 통해 사용. Read-Only ( 불변 )
- 실제 DB의 테이블과 매칭 될 클래스 ( 테이블과 링크될 클래스임을 나타냄 )
- Entity 클래스 또는 가장 Core한 클래스라고 부름
- @Entity, @Column, @Id 등을 이용
- DTO ( Data Transfer Object ) ( 데이터 수집 목적이 강함 )
: 로직을 가지지 않는 순수 데이터 객체 - 'getter' & 'setter'. ( 가변 )
: 계층 간 데이터 교환을 위한 Data Beans. ( Controller / View / business / persistent( DB ) Layer 등 )
- 계층 간 데이터 교환을 위한 객체 ( Java Beans )
- DB에서 데이터를 얻어 Service나 Controller 등으로 보낼 때 사용
- DB의 데이터가 Presentation Logic Tier로 넘어오게 될 때는 DTO의 모습으로 바껴서 오고가는 것
- 로직을 갖고 있지 않는 순수한 데이터 객체이며, getter/setter 메서드만을 갖는다.
- 하지만 DB에서 꺼낸 값을 임의로 변경할 필요가 없기 때문에 DTO 클래스에는 setter가 없고
대신 생성자에서 값을 할당 - Request와 Response용 DTO는 View를 위한 클래스
- 자주 변경이 필요한 클래스
- Presentation Model
- toEntity() 메서드를 통해 DTO에서 필요한 부분을 이용하여 Entity로 만듦
- Controller Layer에서 Response DTO 형태로 Client에 전달 - VO ( Value Oject ) vs DTO
- VO는 DTO와 동일한 개념이지만 read-only 속성을 가짐
- VO는 특정한 비즈니스 값을 담는 객체이고, DTO는 Layer간의 통신 용도로 오고가는 객체
- DAO ( Data Access Object ) ( mapper )
: DB의 데이터에 접근하기 위한 로직이 있는 객체 ( 비즈니스 로직과 분리하기 위해 )
- 실제로 DB에 접근하는 객체 ( Persistence Layer - DB에 data를 CRUD하는 계층 )
- Service와 DB를 연결하는 고리 역할
- SQL 사용( 개발자가 직접 코딩 ) 하여 DB에 접근한 후 적절한 CRUD API 제공
( JPA( Java Persistence API ) 대부분의 기본적인 CRUD method 제공 )
반응형
'웹 개발 ( Web Development ) > 백엔드 ( Back-end )' 카테고리의 다른 글
[WEB] HTTP (0) | 2021.07.06 |
---|---|
[WEB] URL & URI (0) | 2021.07.05 |
[WEB] MVC pattern (0) | 2021.05.12 |
[MyBatis] SQL insert 시 주 키 리턴하기 (0) | 2021.05.11 |
[JDBC] SQL & Java Type Matching (0) | 2021.05.10 |