In-Processで作るポータブルなWEB-DBアプリ

ポータブルなWEB-DBアプリケーションのために、HSQLDBの”In-Memory Database”を使う方法を紹介しました。
ただし、メモリ中で動作させているために、中身のデータを閲覧することがしづらいという問題がありました。
本当は、データベースファイルを使用するIn-Process (Standalone)モードで、作りたかったのですが、ファイルがロックされてしまい、複数の接続を作成することができないと思ったのです。
HSQLDBのクライアントを2つ立ち上げ、同一のデータベースファイルに接続を試してダメだったためです。

調べてみたらIn-Processモードでも複数のConnectionを取得できることが分かりました。
その条件は、“同一VM中であること”です。
Webアプリケーションの場合は、同一VM中で動作させるため問題がありません。以前に試した方法は、VMを2つ立ち上げてしまったため、複数のConnectionを得られなかったのです。
Continue reading


Apache Derbyについて

先日、HSQLDBを使ったインメモリでの動作を調べているときに、Derbyについても興味を持ったので、すこしまとめて見ます。

Apache Derbyは、”Java DB”という形で、Java SE 6に組み込まれるそうです。
Javaには、標準DBが搭載されるようになるわけです。これはもっと前から「あればいいのに。」と思っていたことなので便利になったものです。

組み込みモードで動作させれば、AccessのMDB風にローカルファイルシステムにデータベースを保存できるので、勉強やクライアントアプリケーションには便利です。(ファイル1つですめば、もっとお手軽なんですが)
サーバーモードは普通のDBみたいに、ネットワークを使って接続するタイプです。
一般的なDBサーバのように同時接続する場合にはこちらを使います。サーバーモードであってもインストールはお手軽なので、簡易的なWebシステムなんかでは、採用の価値があるDBかと思います。

HSQLDBも同じように組み込みDB、サーバーモードがありますが、トランザクションや排他的なロックをサポートしている点が違います。(ACID特性)

Apache Derbryについて書かれてあるサイトをまとめます。


WARファイル1つで、DBアクセスも使うサンプルの作り方

StrutsなどのWebアプリケーションでは、データベースアクセスが当然のように行われます。
Webアプリケーションのサンプルを試す側としては、できるだけ簡単にサンプルが動かしたいものです。
サンプルを提供する側としては、WARファイルを放り込むだけで、動作するようにしたいのですが、データベースが絡むと簡単にはできませんでした。

書籍ではよく、MySQLやPostgreSQLが付属していて、それらのインストールや設定も必要となります。HSQLDBなんかを使えば、データベースごと丸ごと配布というのも可能です。

でも、Webアプリを学習しようとしている人は、データーベース環境を整えることに時間を割きたくないし、とにかく簡単にサンプルを動かしたいと思うのです。

そこで、HSQLDBの”In-Memory Database”を使って、WARファイル1つで導入できる、ポータブルなWeb-DBアプリの作り方を紹介します。
Continue reading