連載 役に立つXMLツール集(7)
RelaxerでオブジェクトをRDBにマッピング Page 2

www.netpotlet.com
原田洋子
2004/5/14

サンプルアプリケーションの設計

 本記事でも、前回のCastor JDO同様、最終的に図2に示すHTMLを出力するアプリケーションを作成します。表中の情報はすべてデータベースから取得したものです。

図2 アプリケーションの実行結果


開発手順

 Relaxer JDBCはRelaxer実行時にjdbcオプションを指定するのみなので、Relaxerと同じ手順でアプリケーションを作ります。第4回で基本的な開発手順でサンプルアプリケーションを作りましたが、今回もスキーマを定義することから始めます。実行までの手順は図3のようになります。

図3 Relaxerによる開発手順


スキーマ定義

 まず、スキーマを定義しますが前回のリスト2のgoods.rngをほぼそのまま使います。ただし、データベースのテーブルは図4に示すように、ドキュメントのツリー構造のルートに当たるgoodsListではなく、goods以下から作りたいところです。goods以下をテーブルにマッピングした方が、データベースシステム付属のコマンドやSQLを使って参照しやすくなるためです。このため、リスト1の12行目に示すようにgoods要素もツリーのルートにできるようにスキーマに書き換えました。

図4 ドキュメントのツリー構造

リスト1 goods.rng(別ウィンドウで表示します)


スキーマコンパイル

 スキーマ定義ができたので、コンパイルしてクラス定義とテーブル作成のためのDDLを生成します。今回のサンプルではAntのRelaxerタスクを使うので、ビルドファイルbuild.xmlはリスト2に示すようになります。RelaxerタスクはRelaxerアーカイブに入っているので、特にタスクのためのアーカイブを取得する必要はありません。Relaxerタスクを利用するにはリスト2の21〜24行目で行っているように、まず、taskdef要素で定義しておきます。このとき実行に必要なアーカイブへのパスをセットします。リスト2では12〜19行目で定義しているパスを参照しています。定義したRelaxerタスクを使っているのが26〜28行目です。

 RelaxerタスクはRelaxer実行時のオプションをRelaxer.propertiesファイルから読み込みます。Relaxer.propertiesファイルはスキーマと同じフォルダに置き、27行目にあるようにRelaxerタスクのsrcdir属性でフォルダを指定します。このサンプルアプリケーションではRelaxer.propertiesをリスト3のようにしました。3行目で指定しているdirオプションは生成される*.javaファイルの出力先ですが、dirはEclipseを起動したディレクトリ(フォルダ)からの相対パスにします。Eclipseは起動したディレクトリにworkspaceという名前のディレクトリを作り、その下にプロジェクトのディレクトリを作ります。このサンプルはelfプロジェクトのsrcフォルダ以下に出力させたいので、workspace/elf/srcを指定しました。5行目で指定しているのがRelaxer JDBCのためのオプションです。このオプションを指定すると、データベースを操作するためのクラス定義であるxxxTable.java、xxxTableView.javaが生成されると同時にデータベースのテーブル定義DDLも生成されます。6行目ではスキーマの要素に対応するクラスの名前に付けるプレフィックスです。xxxListという名前はRelaxerが自動生成するクラスでも使われるクラス名なので、名前がかち合って上書きしないように指定したものです。

 Antはこれまでも何度か実行してきたように、

 パッケージ・エクスプローラー → build.xml選択 → 右ボタン →
 Antの実行

で開くウィンドウで実行ボタンをクリックします。2回目以降はツールバーの外部ツール実行ボタンをクリックするだけで同じターゲットを実行できます。なお、フォルダやファイルの配置は図5のようになっています。

図5 スキーマファイルとRelaxer.propertiesの配置

 Antを実行すると、

ElfDetailCategoryCategory.java ElfDetailPricePrice.java
ElfGoods.java ElfGoodsList.java
GoodsList.java GoodsListList.java
GoodsListTable.java GoodsListTableView.java
GoodsTable.java GoodsTableView.java
IGoodsListTableView.java IGoodsTableView.java
RDomBuilder.java RJDBCList.java
RStack.java Relaxer.manifest
UJAXP.java URelaxer.java
USQL.java goods.ddl
goodsList.ddl  

が生成されるので、次のようにしてEclipseの表示を更新すると同時に*.javaをコンパイルします。

 パッケージ・エクスプローラー → elfプロジェクト選択 →
 右ボタン → 最新表示

リスト2 Antのビルドファイルbuild.xml(別ウィンドウで表示します)

リスト3 Relaxer.properties(別ウィンドウで表示します)


テーブル作成

 スキーマがコンパイルされるとDDLも生成されるので、これを使ってデータベースのテーブルを作成します。図4に示したようにテーブルはgoods以下の要素、属性を対応させたものにしたいのでRelaxerが生成したリスト4のgoods.ddlを使います。なお、データベース名はelfにしました。

リスト4 goods.ddl(別ウィンドウで表示します)

 次ページでは、サンプルアプリケーションの実装を行います。(次ページに続く)

Page 1 2/3 Page 3

 Index
連載 役に立つXMLツール集(7)
RelaxerでオブジェクトをRDBにマッピング
  O/RマッピングツールとしてのRelaxer
Relaxer JDBCとは
Relaxerの入手とサンプル実行環境のセットアップ
サンプルアプリケーションの設計
  サンプルアプリケーションの実装
まとめ&サンプルダウンロード
参考サイト


「連載 役に立つXMLツール集」


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

注目のテーマ

HTML5+UX 記事ランキング

本日月間