질문 :
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가 너무나 많아지는 경우 등에는 좋을 수 있습니다.
[작성자] sungjinlee
'프로그래밍 > JAVA' 카테고리의 다른 글
Syntax error on token "println", = expected after 에러 (0) | 2012.03.09 |
---|---|
URL로부터 파일 다운로드 받기 (0) | 2012.02.27 |
[Java] 데이터베이스 연동 데이터 CURD 예제 (0) | 2012.02.24 |
DAO와 Connection Pool의 의미 (0) | 2012.02.24 |