jabsiri......

VO와 DTO

알 수 없는 사용자 2015. 9. 10. 14:00
728x90

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