XMLとリレーショナルデータベースの相互変換を行う手法を探しています。

現在までの調査による私の認識では、パーサで構文解析を行い、XML項目に対応するGetter/Setterを保持するBeanを介してDBとのやりとりを行う方法が一般的な感じなのですが、以下の問題があり採用するのに躊躇しています。
・XML項目が多い(100項目~)ため、対応するBeanを定義するのが手間
・XMLフォーマットが更新された場合(バージョンアップ)にも柔軟に対応できること
XML項目とリレーショナルDB項目を直接関連付けられ、I/Oできるような手法(ライブラリなど)があれば教えてほしいです。
(バージョンの問題にも対応できればなおうれしいです)

回答の条件
  • 1人2回まで
  • 登録:2006/06/09 12:11:42
  • 終了:2006/06/09 17:39:47

回答(2件)

id:mae-san No.1

mae-san回答回数13ベストアンサー獲得回数02006/06/09 15:02:22

ポイント50pt

http://xmlbeans.apache.org/

xmlbeansを使えばXMLに対応したjava bean は自動で生成できます。(XML Schemaは必要ですが)まあschemaもある程度までは自動生成できるのでそれで手で修正すればいいでしょう。

また別のアプローチですがnativeXML Data Baseを採用する方法もあります。

http://www.unc.edu/~teaguese/portfolioS/nativexml/

XMLの要素数が多く、変更が頻繁に入るのであれば僕ならこちらのアプローチを選択します。

id:raptor555

ありがとうございます!

日本語の資料が少なくて大変なんですが、なんとか調べてみようと思います。

2006/06/09 16:17:45
id:mae-san No.2

mae-san回答回数13ベストアンサー獲得回数02006/06/09 16:47:40

ポイント50pt

補足です。

■XML Beans

http://tidus.ultimania.org/wiki/index.php?XMLBeans

http://javayn.seesaa.net/category/1433590-1.html

http://www.beasys.co.jp/e-docs/workshop/docs81/doc/ja_JP/core/in...

XML BeansはANTなど駆使して相当自動化できるはずです。

XML schema修正 → build → deploy

こんなイメージ。

XMLがバインドされたjava object とDBのつなぎですが、これもアプローチによりますがhibernateなどのDAOを使ってみたり、EJB化(CMP)してみたりすればテーブルの再作成はある程度自動化できます。

少なくてもデータ項目の仕様変更がはいったからといってSQL文をガシガシ直して、、みたいな被害は避けられます。

■NativeXML DB

http://www.atmarkit.co.jp/fxml/tanpatsu/18xindice/xindice01.html

Xindiceは僕も以前使用したことがありますが、わりと性能も良く問題なく動いてました。 ただ通常のDBAではメンテできないかもしれないので運用コストは高くつくかもしれません。また当然ですが普通?のRDBMSに比べれば(特に更新系が)低速です。

システム、データ規模、更新頻度など色々考慮して最適なソリューションを選択する必要はあるとは思いますが、頑張ってください!

id:raptor555

大変参考になります。

XMLBeansの説明は、BEAのサイトが詳しいですね。

最初検索したとき、「WebLogic情報なんかいらねぇ」とあまり見なかったのですが、BEAがもともとの開発元だったんですね...

よく見たらすごく詳しく解説されていました...

DBについては、

 ・リレーショナルを使用

 ・DBMSに依存しない

の縛りがあるので、XML Beansを使用して参照更新を行うような形になると思います。

ありがとうございました。

2006/06/09 17:38:12

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません