Map과 VO

이전까지 사용자의 페이지에서 DB로 전달하거나, DB에서 불러온 데이터를 페이지에 뿌려주기 위해 VO(Value Object)를 사용하였다. 요즘 jsp로 만든 오래된 웹을 분석하고 있는데 VO대신 Map을 이용하여 처리하고 있었다. Map을 쓰는 것과 VO를 쓰는 것 어떤 점이 다른지 살펴보고자 한다.


VO

내가 이전부터 써왔던 VO부터 살펴보자. VO를 쓰면 데이터의 의미를 파악하기 쉽다. 학생정보를 저장하는 프로그램을 만든다고 한다면, 입력받은 학생정보는 VO객체로 만들어져 데이터를 전달할 것이다. StudentVO라는 VO는 변수명만 봐도 그 의미를 확실하게 전달할 수 있고, VO안의 들어갈 데이터의 이름(변수 명)들도 명시하고 있기에 어떤 데이터가 들어있는지도 파악하기 쉽다.
하지만 이렇게 VO를 정의하고 변수명을 정하고 약속하는데 시간이 적지 않게 소요될 수 있기에 작은 프로젝트를 빠르게 구현하기에는 부적합할 수 있다. 하지만 대규모 프로젝트나 끊임없이 업무 정의가 바뀌어가는 프프로젝트에서는 명확한 의미를 보여줌으로써 유지보수하기 쉽게 만들어 줄 것이다.

Map

Map으로 학생정보를 저장하는 프로그램을 만든다면, Map에 학생정보를 저장하고 전달할 것이다. Map에 들어가는 Key는 VO의 변수와 다르게 구현할 때마다 손쉽게 다르게 정의될 수 있다. 이는 작은 프로젝트를 빠르게 구현할 때, 새로운 요구사항을 빠르게 반영할 때 장점이 될 수 있다. 하지만 구현 시 마다 정의함으로 정해져있는 VO객체보다는 의미파악에 있어서 혼돈이 있을 수 있다.

경험

실제로 현재 Map으로 데이터를 전달하는 코드를 분석하면서 Map에 담겨있는 데이터를 제대로 파악하기 힘들어하고 있다. 이것이 크게는 전체 업무 프로세스를 파악하기 힘든 지경에까지 이르러 유지보수에 큰 어려움을 주고 있다. VO를 이용하여 구현하였다면 VO 클래스 안에 모여있는 변수를 파악하면 되었기에 의미 파악하기 쉬웠을 것으로 생각된다.

하지만 프로그래밍에서 가장 좋은 정답은 없고 상황에 맞는 것을 선택하는 것이 중요한 것 같다. 간단하고 유지보수가 앞으로 없을 프로그램에서는 Map을 이용해 빠르게 구현하고, 유지보수가 꾸준히 필요하고 복잡한 프로그램에서는 VO를 통해 데이터의 가시성을 확보하는 것이 필요하다.

+ Recent posts