'스트럿츠 프레임워크'에 해당되는 글 1건

  1. 2007.12.17 DAO (Data Access Objects) 요약

위키피디아의 정의에 따르면, DAO (Data Access Objects)는 객체 지향적 설계 패턴의 일종이다. DAO는 애플리케이션에 대하여 하나 이상의 데이터 저장 장치 혹은 관련 소프트웨어에 대한 공통적인 인터페이스를 제공하는 컴포넌트를 의미한다. 즉, 애플리케이션에 대해서는 일관성 있는 데이터 접근을 확보해주는 것이다.

a component which provides a common interface between the application and one or more data storage devices,
such as a database or file. The term is most frequently applied to the Object design pattern.

DAO를 활용하면 물리적인 저장 장치가 파일에서 관계형 데이터페이스로 변화하더라도 애플리케이션이 영향을 덜 받
도록 해준다. 물리적인 저장은 모두 관계형 데이터베이스를 활용하는 경우에도 제품의 종류나 데이터 접근 오퍼레이션(CRUD 작업)을 돕는 솔루션을 활용에 따라서 실제 구현은 많이 달라지게 된다. DAO와 같은 공통적인 접근 인터페이스를 두지 않는다면, RDBMS 제품이나 활용 솔루션에 변화가 생길 때마다 애플리케이션에도 변경이 필요하게 된다.

DAO는 Core J2EE 패턴으로 소개되었다.
Figure 9.1
Core J2EE 패턴 카타로그에 소개된 클래스 다이어그램과 시퀀스 다이어그램을 참조하면 대략을 이해하는데 도움이 된다.
Figure 9.2
 
BusinessObject
BusinessObject 객체는 데이터를 요구하는 클라이언트를 나타낸다. BusinessObject 객체는 데이터 원본에 접근하여 데이터를 얻거나 저장하기를 요구한다. 일반적으로 서비스 레이어의 객체로 구현하거나, 도메인 객체로 구현한다.

DataAccessObject
DataAccessObject 객체는 DAO 패턴의 중심이다. 기반을 이루는 데이터 접근 구현을 추상화시켜서  BusinessObject 객체가 구체적인 데이터 원본을 고려하지 않고도 접근할 수 있게 한다. 또한, BusinessObject 객체는 DataAccessObject 객체에게 데이터의 로딩 및 저장을 위임한다.

DataSource
데이터 원본에 대한 구현을 나타낸다. 데이터 원본은 RDBMS, OODBMS, XML 저장소, 일반 파일 시스템 등의 데이터베이스이다. 이들 외에 레거시나 메인프레임과 같은 기존의 다른 시스템이나 B2B 기반의 연계 서비스 혹은 LDAP과 같은 류의 저장소가 데이터 원본이 될 수도 있다.

TransferObject
데이터를 운반하는 객체를 나타낸다. DataAccessObject 객체는 BusinessObject 객체에게 데이터를 전달하거나 수정을 위해 데이터를 받기 위해 TransferObject 객체를 사용한다. 서비스 레이어 중심으로 구현을 하는 경우는 대부분의 도메인 객체가 TransferObject 역할을 한다.
아래 다이어그램은 DAO 패턴에 Factory Method를 추가로 적용하여 다수의 RDBMS나 기차 저장장치를 일관성 있게 활용하기 위한 전략을 보여준다.
Figure 9.3
Figure 9.4
Figure 9.5
 
출처:http://younghoe.info/227
Posted by 나비:D
:

BLOG main image
by 나비:D

공지사항

카테고리

분류 전체보기 (278)
Programming? (0)
---------------------------.. (0)
나비의삽질 (5)
Application (177)
SQL (51)
Web (27)
etc. (14)
Omnia (0)
---------------------------.. (0)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

달력

«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Total :
Today : Yesterday :