データベースプログラミング
ここでは、基本的にHibernateを利用したデータベースプログラミングについて書いていきます。開発環境はNetbeansです。
Javaにおけるデータベースプログラミングの基礎
Hibernateプログラミング
Netbeansでは、Hibernateをかなり便利につかうことができます。本研究室はその利用を奨励します。
リンク
番外:XMLデータベースプログラム
Xindiceは,フリーのネイティブXMLデータベースです.本講では,XindiceをJavaプログラムで使う方法について学びます.
XMLデータベースとは
一般的にデータベースといえばリレーショナルデータベース(RDB)であり,RDBに XML 文書を格納する場合、通常は XML 文書を細かく分解して、分解したデータをカラムにマッピングする必要がある。 複雑な構造を持つ XML 文書の場合、分解してカラムにマッピングすることが難しくなる。また、 XML 文書を分解せずに、オブジェクトとして1つの固まりとして丸ごとカラムに格納することもあるが、 XML 文書の1部だけ取り出したり、 XML 文書内の特定の要素だけを参照したり更新したりするという柔軟な操作はできない問題がある。
ネイティブ XML データベースの特徴は、リレーショナルデータベースに比べて、 XML の持つデータ構造の柔軟性を生かしやすく、効率的に XML を扱うことができる点にある。リレーショナルデータベースとは違い、 XML に特化した内部構造を持っているため、 XML 文書内のノードをたどる処理を高速に行うことができたり、 XML 文書内の特定の部分だけを一括して操作できたりする。また、 XML 文書を格納するスペースの効率も高くなっている。
Xindiceとは
Xindieceとは,Apache Foundationが管理するフリーのXMLネイティブデータベースである.
正式版は1.0,開発版は1.1b4だが,最近開発が進んでいないと思うのは気のせいだろうか.....
特徴
- 問い合わせ言語は Xpath
- 更新言語は XML:DB XUpdate
- エレメントや属性にインデックスを付けることができる
- Java 用の API が用意されている
- すべて Java で記述されている.つまりマルチプラットフォームで稼動する
- 1.1bからServlet上で動くようになりました.だから1.1を使うのがいいと思います.
コレクションとドキュメント
Xindice では、 XML 文書をファイルシステムに似たモデル管理をする。つまり
- ディレクトリ→コレクション
- ファイル→ ドキュメント
となる.またXindice では,ドキュメントを管理するためにキー(ID)も登録することになる.
JavaによるXindiceの利用
以下,Javaによる開発について書いていきますが,1.0と1.1でかなり変わっているようです.研究室では1.0でやってたんですが,1.1bのほうがよさそうなので1.1について書いていきます.
用意するライブラリ
Xindiceには,以下のライブラリがはいっているので,Javaでプログラミングをするためにはこれらをパスに入れておく必要がある.
(1.1で変わっているので....後日修正します.)
openorb-1.2.0.jarxalan-2.0.1.jarxerces-1.4.3.jarxindice.jarxmldb.jar
まずはデータベースに接続し,ochiというコレクションに接続,なければ作成するというシナリオです.
Collection col = null;
String driver = "org.apache.xindice.client.xmldb.DatabaseImpl";
Class c = Class.forName(driver);
Database database = (Database) c.newInstance();
DatabaseManager.registerDatabase(database);
//サーブレットで稼動させる場合はこんな感じで....
String uri = "xmldb:xindice://localhost:8080/db/ochi";
col = DatabaseManager.getCollection(uri);
if(col == null){
Collection root = DatabaseManager.getCollection(
"xmldb:xindice://localhost:8080/db/");
CollectionManagementService service
= (CollectionManagementService)root.getService(
"CollectionManagementService", "1.0");
col = service.createCollection("ochi");
}
この記述で動かしてみると,trying to register database というメッセージがコンソールのでるが,成功とかの反応はなし.でも確認するとちゃんとできてるようです.
注意事項
このプログラムを動かしたときに,db_bootstrap.ior がなんたらかんたら...というエラーが出た場合,ライブラリが不足していることが原因です.