블로그 이미지
다비도프

만나고, 고백하고, 가슴 떨리고, 설레이고, 웃고, 사랑하고, 키스하고, 함께하고..

Rss feed Tistory
STUDY/DAAB 2007. 4. 26. 12:15

[Study] DAAB(Data Access Application Block) in Enterprise Library 2.0 - (2)

[출처 : http://www.gosu.net/GosuWeb/Article-detail.aspx?ArticleCode=1159]

[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 인스턴스 이름없이 DAAB DatabaseFactory.CreateDatabase 호출했을 사용되는 인스턴스 정보를 담게 된다.

DAAB DatabaseFactory.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 선택할 있으며 해당 DB DB 연결 문자열을 구성하는 각각의 값들을 설정할 있다. 경우 해당 값이 없으면 새로이 추가하면 된다.

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

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

 

 

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

 

<configuration>

  <configSections>

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

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

  </configSections>

  <dataConfiguration defaultDatabase="Northwind" />

  <oracleConnectionSettings>

    <add name="Orders">

      <packages>

        <add prefix="OP2" name="Oracle Package2" />

        <add prefix="OP1" name="Oracle Package1" />

      </packages>

    </add>

  </oracleConnectionSettings>

  <connectionStrings>

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

      providerName="System.Data.SqlClient"/>

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

      providerName="System.Data.OracleClient" />

    <add name="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;

,
TOTAL TODAY