검색결과 리스트
STUDY/DAAB에 해당되는 글 2건
글
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 Provider와DB 연결 문자열 등의 정보를 web.config 등의 구성 정보 파일에 설정한다.
구성 정보를 구성 파일에 저장하기 위해서는 되도록이면 프레임워크에서 제공되고 있는Configuration Console을 이용한다.
물론 구성 파일에 이러한 정보를 저장할 필요없이 사용할 수도 있다.
[Configuration Console을 이용한 구성 정보 설정]
아래 그림은 Configuration Colsole을 실행시킨 화면이다.
위 화면에서 New Application을 선택한다.
어플리케이션을 생성한 뒤에 Data Access Application Block을 선택한다.
그런 다음 Default database의Instance를 설정한다. Default database의Instance는 인스턴스 이름없이 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;
트랙백
댓글
글
STUDY/DAAB 2007. 4. 26. 12:09[Study] DAAB(Data Access Application Block) in Enterprise Library 2.0 - (1)
개요
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이다.
DAAB(Data Access Application Block) in Enterprise Library for .NET 2.0은 .NET Framework 2.0 기반의 프로젝트라면 웹 어플리케이션, 윈도우 어플리케이션, 스마트 클라이언트 어플리케이션에 관계없이 사용 가능하다.
DAAB(Data Access Application Block) in Enterprise Library for .NET 2.0의 사용을 통해 DAC(Data Access Component) 레이어에서의 반복적인 ADO.NET 코딩량을 감소시킬 수 있으며 DB 커넥션 관리와 같은 사용자가 실수하기 쉬운 부분의 실수를 최소화할 수 있다.
DAAB(Data Access Application Block) in Enterprise Library for .NET 2.0은 .NET Framework 2.0 기반의 프로젝트에서 DAC(Data Access Component) 레이어의 Data Framework의 역할을 하게 된다.
이 아티클은 엔터프라이즈 라이브러리 데이터 액세스 응용 프로그램 블록의 개요를 제공한다. 이것은 .NET기반 응용 프로그램들의 일반적인 데이터 액세스 기능 개발을 단순화시켜주는 재사용 가능하고 확장 가능한 소스 코드 기반의 지침이다.
DAAB 소개
엔터프라이즈 라이브러리 데이터 액세스 응용 프로그램 블록, 버전2.0은 일상적인 데이터 액세스 기능을 구현하는 개발 작업들을 단순화 했다. 응용 프로그램들은 이 응용 프로그램 블록을 화면에 표시하기 위해 데이터를 읽고 , 응용 프로그램 계층 간 데이터 전달을 위해 데이터 가져오고 , 그리고 변경된 데이터를 데이터베이스에 다시 보내는 것과 같은 다양한 상황들 안에서 사용할 수 있다. 이 응용 프로그램 블록은 저장프로시저와 인라인SQL 모두에 대한 지원을 포함하고 있으며, 연결들을 관리하는 것이나 파라미터들을 만들고 캐싱하는 것과 같은 일상적인 작업들은 이 응용 프로그램 블록의 메소드 안에 내장되어 있다. 다시 말해, 데이터 액세스 응용 프로그램 블록은 ADO.NET에서 가장 자주 사용되는 기능들에 대한 액세스를 제공한다.
이 응용 프로그램 블록은 또 Microsoft SQL Server, Oracle, 그리고 DB2를 포함한 다수의 데이터베이스 서버들에 동일한 코드를 사용할 수 있게 해줌으로써 이식 가능한 응용 프로그램 코드 개발을 용이하게 한다. 이것은 공통된 인터페이스를 정의하고 데이터 액세스 메소드들을 위한 대부분의 구현을 제공하는 추상화된 기반 클래스를 사용함으로써 가능하다. 예를 들어, SQL Server 한 종류의 데이터베이스를 위해 작성된 응용 프로그램들은 Oracle과 같이 다른 종류의 데이터베이스를 위해 작성된 응용 프로그램과 같아 보이게 된다. 데이터 액세스 응용 프로그램 블록을 사용하고 또 이 가이드의 지침들을 따른다면, 코드들은 대부분 이식 가능한 상태로 유지된다.
데이터 액세스 응용 프로그램 블록은 다음과 같은 기능을 갖고 있다.
- 표준화된 작업들을 수행하는 반복적인 코드를 작성할 필요를 줄인다
- 한 응용 프로그램 안이나 기업 내에서 일관된 데이터 액세스 관행들을 유지하는데 도움을 준다.
- 물리적인 데이터베이스 대상을 변경하는데 따르는 어려움들을 줄인다.
- 개발자들이 다른 종류의 데이터베이스들에 대해 다른 프로그래밍 모델을 학습해야 하는 부담을 줄인다.
- 다른 종류의 데이터베이스에 응용 프로그램을 이식할 때, 재 작성해야 하는 코드의 양을 줄인다.
데이터 액세스 응용 프로그램 블록은 가장 일상적인 데이터 액세스 작업들에 대한 구현을 제공함으로써 위 기능들을 제공한다. 개발자들은 단지 다음과 같이 하면 된다.
- 데이터베이스 개체를 생성한다.
- 만약 필요한 경우, 명령에 대한 파라미터들을 제공한다.
- 적합한 메소드를 호출한다.
이들 메소드들은 성능을 위해 최적화 되어 있다. 또 그것들은 이식 가능하다. 데이터 액세스 응용 프로그램 블록은 SQL Server, DB2, 그리고 Oracle 데이터베이스들에 투명하게 동작한다.
아래 그림은 DAAB의 키 클래스를 나타내고 있다.
변화된내용(Enterprise Library 1.x -> 2.0)
DAAB(Data Access Application Block) in Enterprise Library for .NET 2.0이 Enterprise Library for .NET 1.x에 비해 변화된 내용은 다음과 같다.
.NET Framework 2.0에 새로이 추가된 System.Data.Common 네임스페이스로 동일한 역할을 하는DBCommandWrapper가 없어졌다.
SQL Server와 오라클 데이터 베이스 이외의 DB를 지원하기 위해GenericDatabase가 추가되었다.
RECENT COMMENT