連載
» 2005年02月26日 00時00分 公開

ODP.NETファーストステップ(4):ODP.NETでOracle XML DBを活用する (1/4)

Windowsプラットフォームにおけるアプリケーション開発は、.NETが主流となりつつある。本連載はVisual Basicから.NETへの移行を考えているOracleアプリケーション開発者に向けて、「Oracle Data Provider for .NET」を使うメリットや独自機能、新しいプログラミング・スタイルなどを解説する。(編集局)

[大田浩,日本オラクル]

 今回は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へのアクセス方法 図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へのアクセス方法 図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|2|3|4 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。