자료/ASP.NET

DAAB(Data Access Application Block) in Enterprise Library 2.0 - (2회)

네오블루 2008. 5. 15. 23:16
DAAB(Data Access Application Block) in Enterprise Library 2.0 - (2회)
 
키워드
Enterprise Library 2.0 Data Access Application Block
난이도
중급
작성일
2006-04-09 오후 9:54:13
조회수
1819회
평가점수
4.67
(3명 평가 평균)
첨부파일
(파일없음)
요약설명
DAAB(Data Access Application Block) in Enterprise Library for .NET 2.0은 DAC(Data Access Component) 레이어에서의 반복적인 ADO.NET 코딩량을 감소시켜주며 DB 커넥션 관리와 같은 사용자가 실수하기 쉬운 부분을 관리해주는 DAAB(Data Access Application Block)이 Enterprise Library에 통합된 버전이다. 또한 Enterprise Library 1.x에 있던 DAAB를 ADO.NET 2.0의 변화된 기능에 맞게 수정한 것이 DAAB(Data Access Application Block) in Enterprise Library for .NET 2.0이다.


 wooys
 

[DAAB사용법1(사용을위한준비작업)]

Enterprise Library포함된DAAB이전의DAAB에서는static메서드를사용해서액세스하였다. Enterprise Library포함된DAAB[Plugin]패턴을사용한다.플러그인은구현객체에대한의존성정보를설정파일에담아실시간으로관리함으로써,어플리케이션을구성하는각각의컴포넌트들이구체적인구현클래스를모르고도상호작용있도록한다.

DAAB사용하는단계는다음과같다.

가장먼저DAAB사용할Data ProviderDB연결문자열등의정보를web.config등의구성정보파일에설정한다.

구성정보를구성파일에저장하기위해서는되도록이면프레임워크에서제공되고있는Configuration Console이용한다.

물론구성파일에이러한정보를저장할필요없이사용할수도있다.

 

[Configuration Console이용한구성정보설정]

아래그림은Configuration Colsole실행시킨화면이다.

화면에서New Application선택한다.

 

 

어플리케이션을생성한뒤에Data Access Application Block선택한다.

그런다음Default databaseInstance설정한다. Default databaseInstance인스턴스이름없이DAABDatabaseFactory.CreateDatabase호출했을사용되는인스턴스정보를담게된다.

DAABDatabaseFactory.CreateDatabase메서드를사용해서Database생성할인자로인스턴스이름을주게된다.

Configuration Tool이용해서Default database Instance, Named Instance(그림에서는Northwind, Orders)구성할있고인스턴스별로별도의DB연결문자열, ADO.NET Data Provider설정할있다.

구성정보만으로Application Code 수정없이DB연결과관련된정보를변경할있음으로해서DataBase독립적인코딩이가능하다.

아래그림은Default database Instance, Named Instance(Northwind, Orders)설정한예이다.

 

왼쪽트리에서Data Access Application Block선택하면오른쪽윈도우에서DefaultDatabase Name에서Default Database Instance이름을설정할있다.

그럼각각의인스턴스에대한구체적인설정을살펴보겠다.

Default Database Instance경우(다른Named Instance같다) 왼쪽에서해당인스턴스를선택하면오른쪽창에서해당인스턴스의Data Provider선택할있으며해당DBDB연결문자열을구성하는각각의값들을설정할있다.경우해당값이없으면새로이추가하면된다.

User IDPassword디폴트로없는상태이므로새롭게추가하여해당값을설정하면된다.

설정이끝나면Save Application메뉴를통해해당구성정보를저장할구성파일을지정한다.

 

 

아래그림은3개의인스턴스를설정한Configuration Tool모습과실제구성파일에저장된내용을보여주고있다.

 

<configuration>

 <configSections>

   <sectionname="dataConfiguration"type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"/>

   <sectionname="oracleConnectionSettings"type="Microsoft.Practices.EnterpriseLibrary.Data.Oracle.Configuration.OracleConnectionSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"/>

 </configSections>

 <dataConfigurationdefaultDatabase="Northwind"/>

 <oracleConnectionSettings>

   <addname="Orders">

     <packages>

       <addprefix="OP2"name="Oracle Package2"/>

       <addprefix="OP1"name="Oracle Package1"/>

     </packages>

   </add>

 </oracleConnectionSettings>

 <connectionStrings>

   <addname="Default Database Instance"connectionString="Database=Database;Server=(local)\SQLEXPRESS;Integrated Security=SSPI;"

     providerName="System.Data.SqlClient"/>

   <addname="Orders"connectionString="Data Source=Northwind;Server=(local);User ID=scott;Password=tiger;"

     providerName="System.Data.OracleClient"/>

   <addname="Northwind"connectionString="Database=Northwind;Server=abc;User ID=sa;Password=password;"

     providerName="System.Data.SqlClient"/>

 </connectionStrings>

</configuration>

 

위의구성정보OracleConnectionSettings내에있는Package부분이필요한이유는다음과같다.오라클의Stored Procedure패키지내에그룹핑되어있는경우이를호출하기위해서는Stored Procedure이름앞에패키지이름을붙여주어야한다.

그러나이렇게경우개발되는코드들은오라클이라고하는DB종속적이게된다. DAAB이러한패키지이름과Prefix위와같이구성정보에관리하여개발자가작성하는코드는이러한패키지명에신경쓰지않고코딩할있게함으로써결과적으로개발되는코드가DB독립적이게한다.

위와같이패키지명과Prefix구성정보에담게되면DAAB알아서해당Stored Procedure호출할내부적으로이를처리해주므로개발자는다른DB같은방식으로Stored Procedure호출하면된다.개발자는단지위의구성정보매핑에있는데로해당Stored Procedure이름을해당Prefix시작하게하면된다.

위의구성정보에서prefix“*”사용하게되면 모든Stored Procedure호출시에관련된패키지명이붙게된다.

이러한패키지와Prefix와의매핑은오라클DB에만한정되는얘기이다.

 

Configuration Tool만들어주는구성정보에대한자세한설명은Enterprise Library설명서내Data Access Application Block부분Source Schema for the Data Access Application Block부분을참고하기바란다.

 

이와같이DAAB사용하기위한구성정보를일일이구성파일을열어설정할필요없이GUI화면을통해쉽게설정할있게하는Configuration Tool제공하고있다.주의할것은각각의Key/Value값들은유효성검사를수행하지는않는다.단지키와값이같이존재하는지여부만체크한다는사실을주의해야한다.

결국사용자의책임하에/값을사용해서구성정보를설정해야한다.

 

관련DLL참조추가Using Namespace설정

DAAB사용하기위해서는관련DLL우선참조추가해야한다.

 

 

그림처럼Microsoft.Practices.EnterpriseLibrary.Data.dll, Microsoft.Practices.EnterpriseLibrary.Common.dll, Microsoft.Practices.EnterpriseLibrary.ObjectBuilder.dll참조추가한다.

 

그리고아래와같이개발할코드이상위에using문을추가한다.(C#경우)

using Microsoft.Practices.EnterpriseLibrary.Data;

using System.Data;

 

출처 :http://www.gosu.net