본문 바로가기

Spring_SpringBoot/이론

[ DTO ] vs [ VO ]

항상 쓰면서 왜 다른건지 왜 쓰는건지 모르고 썼다. 반성하자

 

DTO

- 순수하게 데이터를 담아 계층 간으로 전달하는 객체이다.

DTO

 

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

 

다음 예시를 보자.

CardDTO

 

CardDTO라는 곳에 name과 id만을 통한 값을 저장하거나 얻기 위한 코드만 있다.

→ 변조가 가능하다. 변조를 원치 않는다면 다음 예시를 보면 해결할 수 있다.

 

CardDTO

 

 

VO(Value Object)

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

다음의 예시를 보자.

CardVO

 

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