DTO와 VO를 혼용해서 쓰이는 경우가 많이 있다.
이유는 core J2EE Patterns 이라는 책에서 데이터 전달용 객체를 VO로 정의하다가 TO(현재는 데이터를 의미하는 D를 붙여 DTO로 사용)으로 바꾸었기 때문에
DTO (Data Transfer Object)
데이터 전달용이다.
계층 간 데이터 교환을 위해 사용하는 객체이다.
DTO에 데이터를 담아 전달한다.
데이터를 담은 private변수들과 이 변수들을 조작할 수 있는 getter&setter 메소드로 구성되어 있다.
-> 다른 로직들은 담고 있지 않다! 왜? 순수하게 데이터 전달만 하기 때문에
따라서 한마디로 말해서 데이터를 담을 수 있는 바구니 라고 생각하면 편하다
VO (Value Object)
값 표현용
말 그대로 값을 가진 객체
데이터를 가지고 있다는 것에서 보면 DTO와 유사하지만 , VO의 큰 특징은 값이 같으면 객체라고 본다.
(주소가 아닌 값 자체를 비교하게 된다.)
또한 VO는 값자체를 표현하기 때문에 불변해야 한다.
따라서 read-only한 속성을 가지고 있다. 한번 값을 설정하면 중간에 값을 변경할 수 없다.
VO는 getter 메서드와 함께 비즈니스 로직도 포함할 수 있지만 , setter메서드는 가지지 않는다.
분류 | DTO | VO |
역할 | 계층 간 데이터 교환을 위한 객체 | 값을 표현하기 위한 객체 |
상태 변경 여부 | 변경 가능 | read-only |
로직 포함 여부 | getter/setter 외의 다른로직 없음 | 로직 포함 가능 |
참고자료
https://www.youtube.com/watch?v=z5fUkck_RZM
'개발자 면접준비' 카테고리의 다른 글
[개발자 면접준비] OOP(객체지향)이란 무엇인가 ? (4) | 2022.03.19 |
---|---|
[개발자 면접준비] DOM 과 XML은 무엇인가 ? (0) | 2022.03.16 |
[개발자 면접준비] 쿠키와 세션이란 ? (0) | 2022.03.15 |
[개발자 면접준비] MVC를 지키면서 코딩하는 방법 (0) | 2022.03.15 |
[개발자 면접준비] MVC 패턴 (0) | 2022.03.14 |