VO, DTO, DAO 클래스 설명

2013.03.06 23:14

가을의 곰을... 조회 수:4229


VO, DTO, DAO 클래스 설명

[출처] http://choijaehyuk.com/128



VO

개념

Value Object는 DTO와 동일한 개념이나 차이 점은 read only 속성을 갖습니다.

Value Object는 관계데이터베이스의 레코드에 대응되는 자바클래스입니다. 형태는 db레코드를 구성하는 필드들을 Value Object의 Attribute로 하고 해당 변수에 접근 할 수 있는 Getter Setter 메소드의 조합으로 클래스를 형성되어진 클래스입니다. 특성은 대체로 불변성이고equals()로 비교할 때 객체의 모든 값을 비교해야 합니다.

필요성

Network traffic을 줄임으로 인해서 효과적입니다.

기대효과

Network traffic이 줄어듭니다.

 

장 단점

장점으로는 비 서버 측 클라이언트도 네트워크 오버헤드 없이 영속성 데이터에 액세스 할 수 있다는 점입니다. 데이터 전달을 위해 가장 효율적인 방법이지만, 클래스의 선언을 위해 많은 코드가 필요합니다. 즉 파일수가 많아지게 되고 관리도 힘들어지게 됩니다.

예제 소스코드

DTO

개념

데이터가 포함된 객체를 한 시스템에서 다른 시스템으로 전달하는 작업을 처리하는 객체입니다. Vo와 dto의 차이점은 vo는 특정한 비즈니스 값을 담는 객체를 vo라 하고 dto는 레이어간의 통신용도로 오가는 객체를 dto라고 합니다.

Vo와 DTO의 비교

DTO의 나머지 속성은 vo와 똑같다고 생각하여서 차라리 차이점을 비교하려고 합니다.

Core J2EE Patterns 라는 책에서는... Value Object랑 Transfer Object를 동일한 뜻으로 사용합니다만 반대로 Martin Fowler는 저서 Patterns of Enterprise Application Architecture에서 약간 다른 의미로 이야기 합니다. DTO는 메소드 호출 횟수를 줄이기 위해 데이터를 담고 있는 녀석으로, VO는 값이 같으면 동일 오브젝트라고 볼 수 있는 녀석으로 표현을 하고 있습니다.

 

쉽게

DTO a = new DTO(1);

DTO b = new DTO(1);

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

이라고 했을 때 a != b 이지만,

 

VO a = VO(1);

VO b = VO(1); 이라고 했을때는 a == b라고 정의하는 형태입니다.

사실 이러한 내용도 헷갈리는 부분이 있는게 대부분의 검색에서 사람들은 vo와 dto를 같은 개념으로 이야기 하고 있어서 아직도 vo와 dto가 “이런거다”라기 보다 거의 똑 같은 개념으로 생각하고 있습니다.

 

DAO

개념

데이터 접근을 목적하는 객체입니다. 커넥션 같은 것을 하나만 두고 여러 사용자가 DAO의 인터페이스를 사용하여 필요한 자료에 접근 하도록 하는 것이 DAO의 개념입니다.

필요성

모든 데이터베이스에 공통적으로 접속 할 수 있는 ODBC가 나왔지만 완벽하진 못했습니다. 여전히 로우 레벨의 API를 포함하고 있었기 때문에 개발 장벽이 여전히 높았습니다. 이런 이유 때문에 개발자들은 정작 데이터베이스에 들어 있는 데이터를 어떻게 이용할지에 초점을 맞추기 보다, 어떻게 데이터베이스에 접속해서 데이터베이스와 교류하는지에 더 초점을 기울였습니다. 즉 데이터를 활용하는 논리적 고민보다 기술적 고민에 더 많은 신경을 썻었습니다. 이런 이유로 DAO란 대안이 나왔습니다.

기대효과

사용자는 자신이 필요한 Interface를 DAO에게 던지고 DAO는 이 인터페이스를 구현한 객체를 사용자에게 편리하게 사용 할수 있도록 반환해줍니다.

장 단점

DB에 대한 접근을 DAO가 담당하도록 하여 데이터베이스 엑세스를 DAO에서만 하게 되면 다수의 원격호출을 통한 오버헤드를 VO나 DTO를 통해 줄일수 있고 다수의 DB 호출문제를 해결할 수 있습니다. 또한 단순히 읽기만 하는 연산이므로 트랜잭션 간의 오버헤드를 감소할 수 있습니다.

 그러나 Persistent Storage를 너무 밀접하게 결합해서 작성을 하게 되면 Persistent Stroage를 다시 작성할 경우가 생기는데 이러한 경우 유지 보수의 문제가 생길수도 있습니다.





본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
238 R을 이용한 빅데이터 분석20130407 - GNU Korea file 가을의 곰을... 2013.07.03 4713
237 Getting Started with R programming file 가을의 곰을... 2013.07.03 2902
236 R을 사용한 데이터마이닝.pdf file 가을의 곰을... 2013.07.03 2709
235 USB 메모리에 UBUNTU 설치하기 (이동식 UBUNTU) file 가을의 곰을... 2013.06.09 3209
234 [한국인터넷진흥원] 2013년도 정보보안기사, 정보보안산업기사 자격검정 시행 일정입니다. file 가을의 곰을... 2013.05.04 4333
233 포토샵 기본 단축키 : Basic Shot Key On PhotoShop 가을의 곰을... 2013.04.26 3483
232 윈도우7 업데이트 실패 문제 " 서비스가 실행되고 있지 않으므로 ... " 가을의 곰을... 2013.03.17 4455
231 Apache Server 계정주소 "~" 빼기 가을의 곰을... 2013.03.12 2752
» VO, DTO, DAO 클래스 설명 가을의 곰을... 2013.03.06 4229
229 Geany in Cygwin 가을의 곰을... 2013.03.02 4238
228 Data Modeling [데이타모델링] 잘 정리된 글 file 가을의 곰을... 2013.02.26 4073
227 spring_ibatis.pdf 스프링 ibatis 교육자료 가을의 곰을... 2013.02.26 4542
226 MyBatis-3-User-Guide_ko.pdf file 가을의 곰을... 2013.02.26 4275
225 c# ado.net pdf file 가을의 곰을... 2013.02.26 3537
224 Usecase Diagram의 관계 가을의 곰을... 2013.02.25 3121
223 클래스 다이어그램 관계 표현OOP file 가을의 곰을... 2013.02.25 3347
222 [OOP] 추상클래스, 인터페이스 가을의 곰을... 2013.02.25 4096
221 [UML RUP] Entity, Boundary, Control Class 가을의 곰을... 2013.02.25 7360
220 [보안, 제로데이 취약점 분석] [우분투] MetaSploit 설치 및 기본 가을의 곰을... 2013.02.09 3506
219 Install Sun's JDK on Ubuntu, 우분투에서 JDK 설치법 가을의 곰을... 2013.02.08 4619
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED