안녕하세요 삽잡이입니다.
이전 시간까지 말하면서 하나 빠진 개념이 있습니다.
잠시 이전 시간에 배운 ADO.NET 공급자에 대한 그림좀 보시고 오시죠.
뭘 언급 안했을까요?
바로, DataAdapter 객체입니다.
저번 시간의 기억을 잘 살려보시길 바랍니다.
혹시 이해가 안가신다면 다시 한번 살펴보시죠...
..?? |
그런데, DataAdapter 없이도 완벽하게 기능을 수행할 수 있지 않습니까?
즉, 충분히 완벽하게 DB를 가지고 놀 수 있다 이겁니다.
Connection, Command, DataReader만을 가지고도
DB를 읽고 사용할 수 있는데,
사실 이건 '연결 계층'에서만 가능한 것입니다.
DataAdapter 객체는 연결 계층에서 사용하는 형식이 아닙니다.
기억하실지 모르겠지만,
ADO.NET은 세가지의 DB를 사용할 수 있는 방식을 제공한다고 했었습니다.
1. 연결 계층
2. 비연결 계층
3. Entity Framework
이렇게 세가지로 말입니다.
우선 Entity Framework는 계층이 아닙니다.
처음 만들어질 때 연결, 비연결 계층을 만들어낸것이고
Entity Framework는 다른 개념이다 이겁니다.
어차피 Entity Framework는 비연결 계층을 대상으로 만들어집니다.
아무튼... DataAdapter는 비연결 계층에서 사용됩니다.
여기서는 DataReader 객체를 사용하지 않습니다.
그런데 연결과 명령을 내리는 것까지는 똑같습니다.
그리고 DataAdapter 객체는
기본적으로 핵심적인 네가지 형식을 속성으로 가지고 있습니다.
Select Command, Insert Command, Delete Command, Update Command
의 속성을 가지고 있습니다.
Adapter라는 용어 자체가 서로간에 연결을 지어주는,
호환되지 않는 대상을 호환되도록 연결해주는 인터페이스르 뜻합니다.
DataAdapter 객체는 이 개념에 젖어
전에 직접했던 DB와 어플리케이션 간의 작업을
Adapter가 자동적으로 다 해주는 것입니다.
DB 소스는 파일이라면 파일이 될 수 있고 DBMS면 DB가 될 수 있겠지요.
우리는 기본적으로 DBMS를 사용하니까,
DBMS 관점에서 봤을 때 DB 소스는 내부에 진짜 DB들을 말합니다.
그런데, Adapter가 봤을 대에는
어차피 DBMS도 DB 소스로 보일 것 아닙니까?
어뎁터가 DBMS가 중요할까요?
DBMS에서 DB 소스는 굉장히 많은 DB를 가지고 있을 것입니다.
이 DBMS가 어플리케이션 하나와 이야기할까요?
아닙니다... 따라서 수 많은 DB를 가지고 있다고 하는 것입니다.
그러니까 DBMS는 실제 Data들의 집합을 말하는데,
어뎁터에서 보는 DB 소스는
일반적으로 DBMS와 같이 이야기할 수 있는 녀석을 이야기한다 이겁니다.
DataAdapter 객체는
Connection, Command 객체를 다 가져다 사용하는 것은 맞습니다.
그런데, 위의 그림을 보시면 아시겠지만 한꺼번에 있지요.
이 이유는 DataAdapter가 데이터를
쓰고자할 때 한꺼번에 쓰고 읽고자할 때 한꺼번에 읽기위해서입니다.
따라서, 명령 객체가 저렇게 구성되어있는 것입니다.
데이터를 읽을 때에는 Select Command 객체만을 사용하고,
그 외에 작업들도 해당 Command 객체만을 사용한다 이겁니다.
비연결 계층은 ADO.NET에만 있는 개념이고,
연결 계층은 모든 프로그램에서만 사용하는 개념입니다.
그런데 연결 계층을 왜 연결 계층이라고 부를까요?
말장난..? |
Connection 객체에 의해서 계속 연결되어있어야합니다.
그런데, DataAdapter 객체는 한번 연결되고 그 다음 연결이 끊깁니다.
또, DB를 갱신하고자 할 때
마지막으로 Update를 하게될 때 한번 또 연결되고 끊깁니다.
이런 개념을 가지고 있지요.
이번 시간은 여기까지 하도록 하겠습니다.
이상 삽잡이였습니다!
'삽질의 현장 > - .NET' 카테고리의 다른 글
#089_닷넷(.NET)_ ADO.NET - DB 라이브러리 (0) | 2015.11.18 |
---|---|
#088_닷넷(.NET)_ ADO.NET - 또 다른 ADO.NET 데이터 공급자 (0) | 2015.11.17 |
#086_닷넷(.NET)_ ADO.NET - 연결 계층 (0) | 2015.11.17 |
#085_닷넷(.NET)_ ADO.NET - 관계형 DB & 객체형 DB (0) | 2015.11.17 |
#085_닷넷(.NET)_ ADO.NET -DB & DBMS (0) | 2015.11.16 |