連載 役に立つXMLツール集(6)
CastorでオブジェクトをRDBにマッピング
www.netpotlet.com
原田洋子
2004/4/9
これまでのところで準備は終わったので、アプリケーション作成に取り掛かります。このサンプルでは図10に示す7つの操作を行っています。各操作をどのようにプログラミングするのかをリスト8のCastorJDOTest.javaで見ていきます。
図10 サンプルアプリケーションの操作 |
1)アンマーシャル
57 GoodsList goodsList = |
Castorのデータバインディング機能を利用し、リスト3のgoods.xmlをアンマーシャルし、データベースに書き込む情報にする。
2)config.xml、mapping.xmlの読み込み
41 JDO jdo = new JDO(); |
mapping.xmlはconfig.xmlのmapping要素を参照して読み込まれるので明示的に読み込む処理は必要ない。
3)アンマーシャルしたオブジェクトをデータベースへ
75 database.begin(); |
Castor JDOはorg.exolab.castor.jdo.Database#begin()メソッドとorg.exolab.castor.jdo.Database#commit()メソッドの間でデータベースに対する操作を行う。新規登録ではなく修正の場合はorg.exolab.castor.jdo.Database#update()メソッドを使う。
4)プログラム内で作ったオブジェクトをデータベースへ
85 JdoGoods
goods = new JdoGoods(); |
アンマーシャルして生成したオブジェクトだけではなく、このように普通にインスタンス化したオブジェクトもデータベースに格納できる。
5)データベースの情報をオブジェクトへ
106 database.begin(); |
SQL文のSELECT相当の処理を行う場合はOQLクエリを利用する。OQLはオブジェクトに対してクエリを出すのでテーブル名やカラム名ではなく、インスタンス変数名相当の名前を使用する。
JdoGoods型はCategory型とPrice型への参照を持っている。Castor JDOはクラスはテーブルにマップされるので、このクエリではgoods、category、priceテーブルをJOINしたSQLクエリを発行するのと同等の結果が得られる。Castor JDOではJOINに相当する明示的な操作はできないが、
SELECT ...... WHERE goods.id = category.id; |
のような暗黙的な操作が自動的に行われる。
6)マーシャル
134 StringWriter
writer = new StringWriter(); |
Castorのデータバインディング機能を利用し、データベースから取得したデータをマーシャルする。マーシャル後の処理を考慮して、java.io.StringWriter型のオブジェクトに出力した。
7)XML+XSLTでHTMLへ変換
JAXP(Java API for XML Processing)を使って変換している。変換の操作はリスト9のDocumentTransformerクラスで行っている。XSLはリスト10のtemplate.xsl。
【リスト8 CastorJDOTest.java(別ウインドウで表示します)】
【リスト9 DocumentTransformer.java(別ウインドウで表示します)】
【リスト10 template.xsl(別ウインドウで表示します)】
アプリケーション実行
次のようにして実行します。
ツールバーの実行 → 実行... → Javaアプリケーション選択 →
新規(画面1) → 引数タブ
→ プログラム引数 ※注3 (画面2)
→
適用 → 実行
※注3 プログラム引数 docs/goods.xml config.xml docs/template.xsl docs/goods.html |
問題なく実行されれば、図3に示すHTMLファイルdocs/goods.htmlが作られます。
同じidでは新規のデータをデータベースに書き込めないので、続けて実行する場合はidを変えて試してください。
Castor JDOを使ったシンプルなサンプルを紹介しましたが、いかがだったでしょうか。本記事では基本的なプログラミングに触れたのみですが、さまざまなOQLクエリの作り方については次のドキュメントでいくつか紹介されています。
世の中にはいくつものO/Rマッピングツールがあるにもかかわらず、ちょうどいいものがないとの声をよく聞きます。今回取り上げたCastor JDOは古参のO/Rマッピングツールで、最近のツールのように自動化されていないところが多々あります。しかし、使いやすさはかえって、多くこのことをやってくれすぎないところにあるのかもしれないので、Castor JDOもお試しください。
今回使用したプログラムやファイル類は以下からダウンロードできます。
Windows環境で利用される場合、euc-jpをWindows-31Jなど適当なエンコーディングに変更してください。また、日本語を含むファイルはEUC-JPになっていますので、あらかじめ文字コードを変えてから利用されるといいでしょう。
参考サイト
◇
次回も引き続きデータバインディングツールによるO/Rマッピングを取り上げる予定です。(次回に続く)
3/3 |
Index | |
連載 役に立つXMLツール集(6) CastorでオブジェクトをRDBにマッピング |
|
■関連記事
・SEのためのXML
Schema入門
・XMLテクニック集
・Javaで実現するDOM/SAXプログラミング
「連載 役に立つXMLツール集」 |
- QAフレームワーク:仕様ガイドラインが勧告に昇格 (2005/10/21)
データベースの急速なXML対応に後押しされてか、9月に入って「XQuery」や「XPath」に関係したドラフトが一気に11本も更新された - XML勧告を記述するXMLspecとは何か (2005/10/12)
「XML 1.0勧告」はXMLspec DTDで記述され、XSLTによって生成されている。これはXMLが本当に役立っている具体的な証である - 文字符号化方式にまつわるジレンマ (2005/9/13)
文字符号化方式(UTF-8、シフトJISなど)を自動検出するには、ニワトリと卵の関係にあるジレンマを解消する仕組みが必要となる - XMLキー管理仕様(XKMS 2.0)が勧告に昇格 (2005/8/16)
セキュリティ関連のXML仕様に進展あり。また、日本発の新しいXMLソフトウェアアーキテクチャ「xfy technology」の詳細も紹介する
|
|