ODP.NETファーストステップ(4)

ODP.NETでOracle XML DBを活用する Page 1/4

日本オラクル
大田 浩
2005/2/26

Windowsプラットフォームにおけるアプリケーション開発は、.NETが主流となりつつある。本連載はVisual Basicから.NETへの移行を考えているOracleアプリケーション開発者に向けて、「Oracle Data Provider for .NET」を使うメリットや独自機能、新しいプログラミング・スタイルなどを解説する。(編集局)
主な内容
--Page 1--
Oracle XML DBとは
XMLTypeについて
ODP.NETからOracle XML DBへアクセスするためのXML専用クラス
--Page 2--
OracleCommandクラスを使用したOracle XML DBへのアクセス
--Page 3--
OracleXmlStreamクラスでのXML文書の取得
ExecuteXmlReaderを使用し、通常の表をXMLで取得
通常の表をOracleデータベース上でXML文書に変換し、取得する方法
--Page 4--
OracleXmlSavePropertiesクラスを利用した通常の表へのアクセス
連載の最後に

 今回はOracleデータベース上に実装されたネイティブXMLデータベース機能「Oracle XML DB」をOracle Data Provider for .NET(以下、ODP.NET)から使用する方法について説明します。

Oracle XML DBとは

 まず初めに、Oracle XML DBについて簡単に説明しましょう。Oracle XML DBとは、Oracleデータベース上に実装されたネイティブXMLデータベース機能で、以下のような特徴があります。

  • XML標準仕様への準拠
  • 高レベルなXML用のAPIを実装
  • XMLTypeデータ型(XML文書格納用のデータ型)のサポート
  • リポジトリ機能の実装:Oracle XML DB Repository
  • XML Schemaに基づく構造化マッピング

 Oracle XML DBは、XML文書を格納したり取り出すために、リレーショナル・データベースと同様にSQLを用いる方法と、ファイルシステムのような階層的なアクセス方法の2通りをサポートします。

 図1 Oracle XML DBへのアクセス方法

 階層的なアクセス方法を可能にしたことで、Oracle XML DBへはFTP、HTTP、WebDAVなどの標準的なプロトコルを用いてもアクセスできます。また、XML文書へのアクセスのパフォーマンスを上げるために、これらのプロトコルのハンドリングはデータベース・サーバ内にネイティブに実装されています。今回はODP.NETから、XML文書を格納するためのデータ型であるXMLTypeデータ型(以下、XMLType)にアクセスする方法を説明します。

Oracle XML DBの情報は、Oracle Technology Network(以下、OTN)のXML Technology Centerで詳細に説明してありますので、そちらを参照してください。

XMLTypeについて

 XMLTypeがサポートされたことで、次のようにXMLコンテンツに対してOracleデータベース上でXML文書の構造を意識した処理を簡単に実行できるようになりました。

  • XPath式に準じたシンタックスを利用してXML文書の特定の部分にアクセス
  • XML文書に対しての操作(検索、取り出し、変換や更新)を行うSQL関数やメンバ関数の利用
  • Oracle Text索引やファンクション索引によって、高速にXML文書を検索

 XMLTypeは以下の2つの種類に分類されます。

  1. 構造化ストレージ(構造化マッピング)
    −XML文書を細分化し、データのみをオブジェクト型に格納
     
  2. 非構造化ストレージ(内部的にはCLOBに類似)
    −XML文書全体を1つの文字列として格納
 図2 Oracle XML DBへのアクセス方法

 では、実際にODP.NETを利用して、XMLTypeにアクセスする方法を説明します。

構造化ストレージ/非構造化ストレージのどちらを選択しても、ODP.NETからのコーディングは変わりません。格納方法の違いになります。XMLTypeに関する詳細な情報は、OTNのXML Technology Centerを参照してください。

ODP.NETからOracle XML DBへアクセスするためのXML専用クラス

 ODP.NETではOracle XML DBへアクセスするために、以下のXML専用クラスが用意されています。

クラス名 概要
OracleCommand XmlCommandTypeプロパティやExecuteXmlReaderメソッド、ExecuteNonQueryメソッドなどを使用して、XML文書を取得
OracleXmlType OracleXmlTypeクラスを使用して、Oracle固有のXMLTypeデータを取得
OracleXmlStream OracleXmlStreamクラスを使用して、読み取り専用の.NET StreamオブジェクトとしてOracleXmlTypeオブジェクトからXML文書を取得
OracleXmlQueryProperties XmlCommandTypeプロパティがQueryのときにOracleCommandクラスによって使用されるXMLプロパティを表す
OracleXmlSaveProperties XmlCommandTypeプロパティがInsert、Update、DeleteのときにOracleCommandクラスによって使用されるXMLプロパティを表す
表1 ODP.NETで提供されるXML専用クラス

 それでは実際に上記のクラスを利用してOracle XML DBへアクセスしてみましょう。(次ページへ続く)

  1/4

 Index
連載:ODP.NETファーストステップ(4)
ODP.NETでOracle XML DBを活用する
Page 1
・Oracle XML DBとは
・XMLTypeについて
・ODP.NETからOracle XML DBへアクセスするためのXML専用クラス
  Page 2
・OracleCommandクラスを使用したOracle XML DBへのアクセス
  Page 3
・OracleXmlStreamクラスでのXML文書の取得
・ExecuteXmlReaderを使用し、通常の表をXMLで取得
・通常の表をOracleデータベース上でXML文書に変換し、取得する方法
  Page 4
・OracleXmlSavePropertiesクラスを利用した通常の表へのアクセス
・連載の最後に


ODP.NETファーストステップ

TechTargetジャパン

Database Expert フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH