728x90
반응형
1. 결론 먼저!!
DTO = 데이터 전달용
VO = 값 표현용
2. DTO란?
- Data Transfer Object
- 데이터를 전달하기 위해 사용하는 객체
- 데이터를 담아서 전달하는 바구니
계층 간 데이터를 전달하기 위한 객체
- 오직 getter/setter 메서드 만을 갖는다
- 다른 로직을 갖지 않는다.
- 순수하게 데이터를 전달하기 위한 목적이기 때문이다.
- Setter를 없애고, 생성자를 통해서 초기화를 해서 불변 객체로 만들면 DTO가 전달하는 데이터가 전달 과정중에 변조되지 않음을 보장할 수 있다.
DTO 클래스와 Entity 클래스를 분리하라
Entity 클래스는 절대로 요청이나 응답 값을 전달하는 클래로 사용하면 안된다.
- Entity 클래스는 DB와 맵핑되는 핵심 클래스이기 때문이다.
3. VO란?
- Value Object
- 값 그 자체를 표현하는 객체 - 불변 객체
- 생성자를 통해서만 값을 초기화 해야한다.
- 실생활의 VO 예시 - 돈 -> 돈의 고유번호 다르다고 해서 다른 만원이라고 표현하지 않는다.
- 값 그자체만을 나타내고 값으로만 비교되는 객체를 VO라고 한다.
- 다른 로직을 포함할 수 있다.
equal 메서드와 hashCode 메서드를 모두 오버라이딩 해줘야 한다.
4. DTO vs VO
728x90
반응형
'영상 후기 > 기타' 카테고리의 다른 글
영상 후기 - [10분 테코톡] 🤠루피의 인증과 인가 (0) | 2023.04.28 |
---|---|
영상 후기 - [10분 테코톡] 🎡토니의 인증과 인가 (0) | 2023.04.20 |
영상 후기 - 기계들의 대화법 - REST API (0) | 2023.04.18 |
영상 후기 - [10분 테코톡] 차리의 Stream (0) | 2023.03.17 |
영상 후기 - [10분 테코톡] 🙆♀️티버의 API vs Library vs Framework (0) | 2023.03.16 |