-
VO와 DTOjabsiri...... 2015. 9. 10. 14:00728x90
VO와 DTO
스터디? 진행중 남의 소스를 보니 VO도 있고 DTO도 있는 것을 봤다.
전혀 관심이 없었고 같은 개념으로 생각하고 VO를 저렇게도 부르나 보다 하고 신경도 안 썼었는데..그런게 아니었다.
역시 용어나 개념이 무엇이든 나오면 한 번은 봐야 하는 게 정답인가 보다.
(그리고 타인의 소스는 조금 자주 많이 보는게 좋다는 것도...)
그래서 정확한 개념이 무엇인지도 궁금하고 조금 찾아 보았다.
- Value Object
한번 세팅된 값은 변하지 말아야 하는 ( immutable ) 그래서 == 이 같다고 나와야 한다고 마틴팔로우 형님이 쓴 책?글?에서 이야기했다고 한다. ( 들은 이야기 )
- Data Transfer Object
Layer 간의 데이터 전송 ( 데이터 교환 )이고 == 비교 시 같으면 안 된다고. 이것 또한 마틴팔로우 형님이 쓴 책?글?에 나와있다고 한다. ( 역시 들은 이야기 )
자 그런데.
대부분 VO를 immutable 하게 사용하고 있지 않은데 프로그램상에서 개념을 맞추려고 DTO라는 것을 추가해서 개발하고 있는 거 같다.
그러면 굳이 DTO라는 객체를 따로 만들어야 할까? (파일 개수가 늘어나는데)라는 의문이 든다. VO를 DTO처럼 사용하면 되니까.
- 이미 개발자가 immutable 하지 않은 VO를 가지고도 그것을 고려하여 DTO 생성해서(추가해서) 사용하고 있다면
- VO를 이용하여 개발할 때 DTO 생성하지 않고(추가하지 않고) 이를 고려해서 개발하는 것과 같은 것이 아닌가?
( 글 쓰고도 참.. 설명이되나. )
또한 객체를 생성해주는 Library들을 보면 이미 reflection을 사용하여 만든 객체들은 immutable 하지 않다고
http://faildev.blogspot.kr/2012/05/bean.html 의 글에서 잘 설명 해주고 있다.
이런 상황이라면 어차피 개발하면서 실수를 하면 VO의 값을 변경하여 쓸 수 있고 단지 개발자가 그렇게 하지 않게 고려하여 개발하고 있다는 것이다.
정답은 아니어도 어떻게 사용하는게 합리적일까...
참고자료
[1]
http://blog.javarouka.me/2013/03/javabeans-vo-dto.html
JavaBeans, VO, DTO?
[2]
http://faildev.blogspot.kr/2012/05/bean.html
object generator library는 immutable class를 만들수없다.
728x90'jabsiri......' 카테고리의 다른 글
[단상]객체지향의 사실과 오해를 읽고... (0) 2016.07.26 REST API 디자인 가이드 (0) 2016.03.15 Hibernate.... (1) 2015.09.10