항상 쓰면서 왜 다른건지 왜 쓰는건지 모르고 썼다. 반성하자
DTO
- 순수하게 데이터를 담아 계층 간으로 전달하는 객체이다.

로직을 가지고 있지 않은 순수한 데이터 객체이며 메서드로는 getter/setter만을 가진다.
다음 예시를 보자.

CardDTO라는 곳에 name과 id만을 통한 값을 저장하거나 얻기 위한 코드만 있다.
→ 변조가 가능하다. 변조를 원치 않는다면 다음 예시를 보면 해결할 수 있다.

VO(Value Object)
- VO의 경우 특정 값 자체를 표현하기 때문에 불변성의 보장을 위해 생성자를 사용하여야 한다.
다음의 예시를 보자.

private final로 설정하므로 상수(불변)이라는 의미이다. 그러므로 수정이 불가하다.
※ 여기서 equals(동일성)와 HashCode(동등성)에 관한 내용이 나온다. 다음 링크를 통해서 알 수 있다.
String, 객체 - Equals(), HashCode()
String을 Equals() 하면서 궁금해진 것이 있다. 1. String 왜 Equals를 하는가? 예시를 보자 첫 번째가 false로 나오는 이유는 str1은 스트링 풀(String Pool)에 있는 "String"을 가져오지만str2에 있는 new String("
wingerms.tistory.com
'Spring_SpringBoot > 이론' 카테고리의 다른 글
| 애노테이션(Annotation) - Component, Bean (0) | 2024.06.26 |
|---|---|
| Spring-Security (0) | 2024.06.25 |
| [JSON] vs [XML] (0) | 2024.06.15 |
| [ War ] vs [ Jar ] (0) | 2024.06.15 |
| Redriect vs Forward (0) | 2024.06.14 |