본문 바로가기

프로그래밍/JAVA

자바에서 VO 클래스를 쓰는 이유

질문 :

VO클래스를만들고.. set/getter 메소드를 이용해서 디비에 데이터를 넣거나 읽을건

지금까지 그냥 배운대로 그런가보다 ~ 하고 쓰고있는데요..

VO 클래스를 거치지 않고 바로 헤쉬맵을 이용해서도 할수있지않을까하고.. 생각이 들어서요

어떤 차이점이잇는지 궁금합니다.

답변 :

가장 큰 이유는 compile time 오류와 관련 있습니다.

hash map은 컴파일시에 오류를 잡아내질 못합니다.

VO라면, 다음처럼 사용할 겁니다.

vo.setName("hahahaha");

...

String name = vo.getName();

반면에 해쉬맵을 사용한다면, 이렇게 쓰고, 이렇게 읽고 하겠죠.

map.put("name", "hahahaha");

...

String name = map.get("name");

1. 해쉬맵은 get이나 put에서의 key가 잘못되도 컴파일시에는 에러를 잡아내질 못합니다.

즉, map.put("names") 라고 해도 에러가 나질 않죠.

반면에, vo.steNames() 나 vo.getNames()는 에러가 나서 컴파일조차 되지 않을 겁니다.

2. 데이터 타입에 대한 에러를 잡아내질 못합니다.

String인지 Integer인지를 컴파일시에는 모르죠.

3. 해쉬맵은 프로그램 말고도 별도의 정보가 필요합니다.

VO는 그 자체가 필요한 정보를 담고 있습니다.

name, address, age 등 VO의 정의만 봐도 대충은 알 수 있는데 반하여,

해쉬맵은 이 데이터를 정의한 다른 문서가 필요합니다.

이는 규모가 큰 프로그램일수록 더 필요하죠.

반면에 해쉬맵이 좋은 경우는,

데이터의 필드들이 가변적인 경우,

매우 복잡한 구조로되어 있어 VO로 규정하기는 곤란한 경우.

VO가 너무나 많아지는 경우 등에는 좋을 수 있습니다.

[출처] http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040201&docId=71573791&qb=Vk8g7YG0656Y7Iqk&enc=utf8&section=kin&rank=1&search_sort=0&spq=0&pid=gpRtcF5Y7uCsstDvUh0ssc--514595&sid=TpTa0DjMlE4AADv9GoY

[작성자] sungjinlee