[Spring] VO, DTO 차이
VO(value Object)
- 데이터 그 자체로 의미 있는 것을 담고 있는 객체이다
- DTO와 동일한 개념이나 차이점은 Read–Only 속성 객체이다.
- 간단한 독립체( Entity )를 의미하는 작은 객체를 의미한다.
- 관계데이터베이스의 레코드에 대응되는 자바클래스이다.
- 형태는 Database레코드를 구성하는 필드들을 VO의 Attribute로 하고 해당 변수에 접근 할 수 있는 Getter와 Setter 메소드의 조합으로 클래스를 형성되어진 클래스이다.
- 거의 불변성을 가지고 equals()로 비교할 때 객체의 모든 값을 비교해야 한다.
DTO(Data Transfer Object)
- 전송되는 데이터의 컨테이너이다.
- VO와 동일하게 데이터를 저장하여 사용하도록 하는 부분에서 필요하다.
- VO와 비교를 하여 보면 DTO는 같은 시스템에서 사용되는 것이 아닌 다른 시스템으로 전달하는 작업을 처리하는 객체이다.
- Layer간의 통신 용도로 오가는 객체를 말하기도 한다.
- 현재의 개발 환경에서 보통 데이터는 다음과 같이 흐름으로 이동한다.
- 서버 측 : Database Column Data -> DTO -> API(JSON or XML) -> Client
- 클라이언트 측 : Server -> API(JSON or XML) -> DTO -> View or Local Database System
정리
외부 시스템과 데이터 통신을 할 경우에는 DTO로, DB에서 가져오는 Data는 VO로 정의해서 사용한다고 약속을 하면 될 것 같다.
'◽ Spring, SpringBoot' 카테고리의 다른 글
[Spring - 어노테이션(Annotation) ] @RequestMapping, @GetMapping, @PostMapping, @RequestMapping → url 처리 (0) | 2019.08.15 |
---|---|
[Spring - 어노테이션(Annotation) ] @Component → xml 빈 등록 (0) | 2019.08.15 |
[Spring - 어노테이션(Annotation) ] @Autowired, @Inject, @Resource → 종속성 주입 (0) | 2019.08.15 |
[Spring - (15) ] 인터셉터(Interceptor) (0) | 2019.08.12 |
[Spring - (14) ] 인터셉터 기능 (0) | 2019.08.12 |
[Spring - (13) ] 스프링 구조에 인식 확인 방법 (0) | 2019.08.11 |
[Spring - (12) ] DTO의 역할 (0) | 2019.08.09 |