Luxeon上のデータを操作するサンプルアプリケーションを例に解説します。今回は実際にアプリケーションを実装します。APIについて説明しました。)処理を中心としたサンプルアプリケーションを実装していきます。第4回:XMLDBとJavaAPI、JAXB2.0を活用したWebアプリケーション開発(設計編)第5回:XMLDBとJavaAPI、JAXB2.0を活用したWebアプリケーション開発(APIチュートリアル編)対象読者XMLに触れたことがある方、RDBなどデータベースを操作したことがある方、Javaでプログラミングしたことがある方を対象とします。第4回を参照してください。本稿のサンプルアプリケーションは、JavaのWebアプリケーションです。以下にサンプルアプリケーションのファイル構成を示します。WEBアプリケーション定義ファイル)クラスの構成クラスの全体像まずは、サンプルアプリケーションを構成するJavaクラスの全体像を以下のクラス図に示します。上記クラス図では、役割ごとにクラスを3つのレイヤーに分類しています。各レイヤーは以下の表にまとめました。APIですので、実際にサンプルアプリケーションで実装するのは「オブジェクトレイヤー」と「オブジェクト/XML変換レイヤー」になります。各レイヤーの関係を示した図を以下に示します。レイヤー全体構成コントローラクラス処理全体のフローを制御するコントローラは、サーブレット(ItemCRUDServlet)で実装します。「action="処理名"」という形式でHTMLのhiddenに埋め込まれた処理名をもとに、if文で分岐し、該当する処理を実行します。実業務のアプリケーションでは、StrutsなどのWebアプリケーションフレームワークを用いて制御するところですが、サンプルアプリケーションを極力シンプルな構造にするために、本稿ではコントローラとして、サーブレットを用いています。処理制御(コントローラ)エンティティクラス次に、各処理で共通で使用する商品エンティティクラス(Itemクラス)について説明します。サンプルではJAXB2.0のアノテーションを使用して、JavaクラスとXMLを関連付けして、オブジェクトとXMLデータの相互変換を行います。JavaクラスとXMLのマッピングの関係を以下の図に示します。オブジェクト、XMLの関連XMLのitem要素には、Itemクラスが対応します。item要素の子要素であるitem_code、item_name、price、description、options、reg_dateはItemクラスのインスタンス変数とマッピングし、それぞれにアクセッサメソッド(publicのインスタンス変数も可)を用意しています。item要素の子要素であるdescriptionにはDescriptionクラスが対応し、別クラスとして定義しています。以下に、JAXBのアノテーションを記述したItemクラスのソースの抜粋を示します。}}DaoクラスDaoクラスは、ItemDaoImplクラスとLuxeonDaoクラスに実際の処理が実装されています。ItemDaoインターフェイスとItemDaoImplクラスItemDaoImplクラスはItemDaoインターフェイスを実装しており、Daoクラスを呼び出す側がバックエンドのデータソースに依存しないようになっています。以下にItemDaoインターフェイスのソースを示します。itemCode);ItemDaoImplクラスには、アプリケーションに依存した商品データの操作処理が実装されています。Luxeonに依存した実装になっています。バックエンドに異なるデータソースを採用するような場合には、別の実装(Impl)クラスを作成します。ItemDaoImplクラスの実装詳細は後述のアプリケーションの各処理の説明で説明します。ItemDaoFactoryクラスItemDaoFactoryには、ItemDaoのファクトリメソッドが実装されており(createDaoメソッド)、インスタンスを返す処理が記述されています。以下にItemDaoFactoryクラスのソースを示します。Luxeonのデータを操作するための汎用的な処理が実装されています。XML新規作成処理(createXMLメソッド)、XQuery実行処理(executeXQueryメソッド)、XUG実行処理(updateXMLメソッド)、XML削除処理(deleteXMLメソッド)などです。これらの処理はアプリケーションの仕様に関係なく使用することができる汎用メソッドです。NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。