자료/Javascript

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

네오블루 2008. 5. 15. 23:17
DAAB(Data Access Application Block) in Enterprise Library 2.0 - (3회)
 
키워드
Enterprise Library 2.0 Data Access Application Block
난이도
초급
작성일
2006-04-09 오후 9:59:39
조회수
1653회
평가점수
3.60
(5명 평가 평균)
첨부파일
(파일없음)
요약설명
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
 

[Database Object생성하기]

[구성정보설정과관련DLL참조추가,네임스페이스using추가후에해야할작업은DatabaseFactory클래스를통해사용할Database오브젝트를생성하는것이다.

이러한Database오브젝트는위에서설정한구성정보를바탕으로DatabaseSpecificDatabase오브젝트가생성된다.

Database오브젝트를생성하기위해서는DatabaseFactory클래스의CreateDatabase메서드를호출하면되는데메서드의인자로구성파일내에있는Database Instance명을넘기면된다.

아무런인스턴스명도인자로넘기지않을경우에는구성정보파일내에Default Instance설정된정보가Database오브젝트생성시에이용된다.

아래코드가Default Database Instance이용해서Database Object생성하는코드이다.(C#)

Database db = DatabaseFactory.CreateDatabase();

 

Default Database Instance아니라구성정보파일내의Northwind같이Named Instance정보를이용해서Database Object생성하기위해서는아래와같이코딩하면된다.

Database db = DatabaseFactory.CreateDatabase("Northwind");

 

혹은연결하고자하는DB연결정보를알고있는경우DatabaseFactory클래스를사용하지않고추상클래스인DatabaseDB구체적인클래스를사용해서Database오브젝트를생성한다.경우DB연결에대한정보는구성정보파일을사용하지않고해당DBDatabase오브젝트생성시인자로넘겨준다.

아래코드는DB연결문자열을이용해서SqlDatabase오브젝트를생성하는코드이다.

string myConnectionString = GetConnectionString();

 

SqlDatabase sqlDatabase = new SqlDatabase(myConnectionString);]

 

[DAAB오버로드의종류]

  • 기존의SqlHelper, OracleHelper류의DAAB다르게이번버전의DAAB에는ADO.NET 2.0DbCommand오브젝트를인자로받아들이는오버로드가있다. DbCommand오브젝트를파라미터로받아들이는오버로드는기존버전에비해FlexibilityControllibility뛰어나다.
  • Stored Procedure이름과해당Stored Procedure에서Input Parameter사용될값들의Collection인자로넘길있는오버로드가있다.
  • 인라인SQL문과파라미터없는Stored Procedure실행시킬오버로드가준비되어있다.
  • 그리고모든오버로드에transaction받아들이는오버로드가있다. 

[DAAB사용법2(간단한DAAB사용)]

[InlineSQL or Stored Procedure실행하기]

  • 디폴트데이터베이스인스턴스나명명된데이터베이스인스턴스생성

Dim db As Database = DatabaseFactory.CreateDatabase();

        or

        Dim salesDb As Database = DatabaseFactory.CreateDatabase(“sales”);

 

  • SQL커맨드실행

productDataSet = db.ExecuteDataSet(CommandType.Text, “SELECT ProductID, ProductName FROM Products”);

 

경우사용하는DBDB연결문자열을정확히알고있다면구성파일을사용하지않고아래와같이바로해당하는DB객체를생성할있다.

SqlDatabase sqlDatabase = new SqlDatabase(myConnectionString);

GenericDatabase db = new GenericDatabase(connectionString, OdbcFactory.Instance);

 

[GenericDatabase]

Enterprise Library 1.x에서는DBDatabase-derived클래스가필요했었다.새로운버전인Enterprise Library 2.0에서는GenericDatabase 클래스가생겼는데GenericDatabase어떤.NET Managed Provider와도사용될있다.

 

[간단한DAAB사용1]

Northwind데이터베이스에서CustomerID주문정보untyped dataset가져오는예제는아래와같다.

 

public DataSet GetOrdersByCustomerID(string customerID)

{

    Database northwind = DatabaseFactory.CreateDatabase();

 

    DbCommand command = northwind.GetSqlStringCommand

         ("SELECT [OrderID],[OrderDate] FROM [Orders] WHERE

           [CustomerID] = @CustomerID");

 

    northwind.AddInParameter(command, "@CustomerID", DbType.String, customerID);

 

    DataSet orders = new DataSet();

 

    northwind.LoadDataSet(command, orders, "orders");

 

    return orders;

}

 

[간단한DAAB사용2(Static Factories)]

Northwind데이터베이스에서CustomerID주문정보untyped dataset가져오는예제는아래와같다.

 

Static Factories를 이용한 방법은 Enterprise Library 1.x에서 사용하던 방법이다.

Database northwind = DatabaseFactory.CreateDatabase();

Database northwind = DatabaseFactory.CreateDatabase("Northwind");

 

Web.config나 App.Config에 설정 정보를 이용하여 적절한 Database 클래스를 만든다.

 

<configuration>

  <configSections>

    <section name="dataConfiguration"          type="Microsoft.Practices.EnterpriseLibrary.                Data.Configuration.DatabaseSettings,        Microsoft.Practices.EnterpriseLibrary.Data" />

  configSections>

  <connectionStrings>

    <add

        name="Northwind"

        providerName="System.Data.SqlClient"

        connectionString="Data Source=(local);                   Initial Catalog=Northwind;                   Integrated Security=True" />

  connectionStrings>

  <dataConfiguration defaultDatabase="Northwind"/>

configuration>

 

[간단한DAAB사용3(Instance Provider Factories)]

IConfigurationSource source = new SystemConfigurationSource();

DatabaseProviderFactory factory = new DatabaseProviderFactory(source);

Database northwind = factory.Create("Northwind");

 

[간단한DAAB사용4(SqlDatabase Object Directly)]

아래코드는DB연결문자열을이용해서SqlDatabase오브젝트를생성하는코드이다.

 

SqlDatabase northwind = new SqlDatabase (ConfigurationManager.ConnectionStrings["Northwind"].ConnectionString);

 

 

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