[Java] DTO(Data Transfer Object) vs VO(Value Object)
2022. 4. 14. 23:11
반응형
DTO(Data Transfer Object)
계층(Layer)간 데이터를 교환하기 위한 객체
DTO의 특징
1. DTO는 데이터 접근 메서드 외 기능을 가지고 있지 않는다. (getter, setter 메서드 외에 비즈니스 로직을 가지지 않는다.)
- 정렬, 직렬화 등 데이터 표현을 위한 기능은 가질 수 있다.
2. 값을 유연하게 변경할 수 있다. (가변성, mutable)
3. 데이터 캡슐화를 통해 유연한 대응이 가능하다.
- 데이터 요청 수 감소 효과
VO (Value Object)
값을 가지는 객체
VO의 특징
1. 변하지 않는 값을 가지는 객체(불변성, immutable)
- 값이 변하지 않음을 보장하며 코드의 안정성과 생산성을 높임
2. 값이 같다면 동일한 객체
- 각 객체를 비교하는데 사용되는 ID가 없음
- 같은 객체인지 판단하기 위해 각 속성들의 값을 비교함
- equals() 메서드와 hashCode() 메서드를 오버라이드해서 객체 비교를 구현함
공통점 및 차이점
공통점
- 레이어 간 데이터를 전달할 때 사용 가능
- VO는 불변을 보장하기 때문에 데이터 전달 용도로 사용 가능
차이점
DTO | VO |
값이 변할 수 있음 (가변 객체) | 값이 변하지 않음 (불변 객체) |
레이어와 레이어 사이에서 사용 가능 | 모든 레이어에서 사용 가능 |
내부의 속성(필드)값이 같아도 다른 객체로 식별 | 내부의 속성(필드)값들이 같다면 같은 객체로 식별 |
데이터 접근 이외의 기능을 가지지 않음 | 특정 비즈니스 로직을 가질 수 없음 |
참고
https://parkadd.tistory.com/53
728x90
반응형
'programming language > Java' 카테고리의 다른 글
[Java] 파일 문자셋 확인 라이브러리 / Encoding Detector / juniversalchardet (0) | 2022.04.26 |
---|---|
[Java] String valueOf vs concatenation with empty string / The difference between String.valueOf and + "" (0) | 2022.04.25 |
[Java] Map 보다 DTO 클래스를 사용해야 하는 이유 (0) | 2022.04.07 |
[Java] String을 Null Safe하게 비교하기 (0) | 2022.04.05 |
[Java] 파일 복사 File copy (0) | 2022.03.11 |
Written by ner.o
개발자 네로의 개발 일기,
자바를 좋아합니다 !
댓글 개