반응형
더보기
Spring에서 사용되는 MVC패턴을 다시한번 공부하며 상기시키다가 문득 궁금해진 Domain Layer의 계층간 이동에서 사용되는 데이터를 가지는 이 객체는 왜 다양한 이름으로 가질까 하는 궁금증에 공부한 것을 바탕으로 정리해 보았다.
- 공부하며 여러가지 말들이 많았지만 확실성이 상대적으로 높지 않은 블로그 글들보다는 우아한 태크의 라흐님의 말에 의한 정보를 많이 수용하였다.
💡 개념
VO : Value Object의 약자로 값을가진 객체라는 의미를 가지고있다.
DTO : Data Transfer Object의 약자로 데이터이동이라는 의미를 가지고 있다.
- 공통점
- 레이어(계층간) 데이터를 전달할떄 사용된다.
- 차이점
DTO | VO |
- 값이 변할 수 있다. - Layer와 Layer의 사이에서 사용가능하다. - DTO dto1(1) != DTO dto2(1) - 데이터 접근 이외의 기능을 가지지 않는다. |
- 값이 변하지 않는다. - 모든 레이어에서 사용이 가능하다. - VO vo1(1) == VO vo2(1) - 특정한 비지니스 로직을 가지고 있을수 있다. |
DTO의 특징
- 데이터 접근 메서드 이외의 기능을 가지고 있지 않다 (Setter와 Getter로 이루어져있다)
- 정렬과 직렬화 등 데이터 표현을 위한 기능을 가질수 있다.
- 데이터의 캡슐화를 통한 유연한 대응이 가능하다.
- 위와 같은 특징으로 데이터의 요청 수를 컨트롤할수있다.
VO의 특징
- 값 자체로 의미를 가지는 객체
- 변하지 않는 값을 가지는 객체이다. →값이 변하지않음을 보장하고 코드의 안전성과 생산성을 높여줄수있다.
- 값이 같다면 동일한 객체이다. →각 객체를 비교하는데 사용되는 ID가 없다. →같은 객체인지 판단하기 위해서는 각 속성들의 값을 비교하여야한다.
반응형
'Spring' 카테고리의 다른 글
Spring boot + MySQL 접속시 'Public Key Retrieval is not allowed' 오류 해결 (0) | 2021.08.28 |
---|---|
Reactive Stream 리액티브 스트림이란. (0) | 2021.07.10 |
Batch Job(일괄처리프로그램) (0) | 2021.07.01 |
Spring Websocket (0) | 2021.05.29 |
IOC(DI)컨테이너 (0) | 2021.05.29 |