VO인가 HashMap인가?
최근 면접에서 VO가 편한지 MAP이 편한지에 대한 의견과 그 이유에 대해 물어보는 질문을 받았습니다.
VO란 용어가 생소하여 답변을 제대로 하지못하였기 때문에 VO에 대해 공부했었는데,
VO와 DTO가 서로 다르긴 하지만 현장에서는 이를 혼용하여 사용하는 경우가 많다는 것을 알았습니다.
하지만 아직까지 공부의 수준이 미흡하여 질문의 의도에서
VO가 DTO로써 뜻하는 것인지 VO를 뜻하는 것인지도 정확하게 가늠이 가질 않더군요...
※주관적인 견해가 많이 담겨있으므로 틀린 부분은 지적해주시면 감사하겠습니다.
01. VO란?
VO는 Value Object의 약자로써 그 자체로 값을 가지는 객체를 의미합니다.
02. HashMap이란?
키:값 의 형태를 가지는 데이터 형식을 의미합니다.
03. 그래서 VO가 좋다는거야 MAP이 좋다는거야??
이 부분에 대해서는 면접관님께서도 현업에 계신분들 사이에서도 의견이 나뉘는 부분이라 하셨습니다.
그렇다 보니 딱 이게 좋다! 저게 좋다! 라고 하기에는 어려운 부분이라 생각됩니다.
저같은 경우에는 처음부터 공부하면서 MVC2패턴을 사용했기 때문에 DTO를 사용하는게 당연하다 생각했고 모두가 그렇게 사용하는줄로만 알고 있었습니다. 때문에 HashMap의 장단점이 무엇인지, DTO의 장단점이 무엇인지를 이해하기는 어려웠습니다.
해서, 실제로 좀 써봐야 이해가 될것같아 기존에 만들었던 프로젝트를 HashMap을 사용하여 작성하면 어떨까? 하는 생각에 조금 코드를 수정해보았습니다.
여기서 제가 느낀점은 아래와 같았습니다.
HashMap의 장점.
01. 코드 수정이 용이했다.
- DTO를 사용할 경우 해당 DTO를 사용하는 모든 코드가 다 연계되어있다보니 수정하는데에 조심스러운 반면, HashMap은 딱 그 부분만 수정하면 금방금방 사용할 수 있어 좋았습니다.
HashMap의 단점
02. 도대체 뭘 주려는건지 모르겠다.
- DTO를 사용할때에는 클래스명과 속성을 손쉽게 유추해낼 수 있던 반면 HashMap을 사용하면 이게 뭐였는지 파악하기가 쉽지가 않았습니다.
DTO의 장점과 단점은 HashMap과 딱 반대되는 내용입니다.
무엇을 전달하려고 하는지를 알아보기가 손쉬웠지만 함부로 코드 수정을 하기는 쉽지 않았습니다.
하지만 결과적으로 봤을때에는 DTO를 사용하는 것이 저는 훨씬 편했습니다. 원래도 익숙해져있던 패턴이기도 하고 가독성이 좋았기 때문입니다.
그리고 공부하면서 알게된 사실인데 프로그래밍적 부분에서도 DTO를 사용하는것이 더 낫다고 하더군요.