CodeZine(コードジン)

特集ページ一覧

Java DBをクライアントサイドのポータブルなデータベースにする

排他的に制御できるJava純正の軽量RDBMS

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2006/06/17 00:00

Java DBを既存のJavaアプリケーションに組み込むことで、アプリケーションと一緒に起動したり終了したりするポータブルなデータベースを作成することができます。さらに、XMLファイルを使ってXMLスキーマをその場で作成し、SQLを使わずにテーブルに行を挿入することもできます。

目次

はじめに

 Javaアプリケーション用の排他的な組み込みデータベースというアイデアは非常に素晴らしいものですが、その潜在的な力を完全に活用できるようになるにはまだ時間がかかりそうです。現在では、デスクトップアプリケーションやブラウザアプリケーションの補助的なクライアントサイドのデータベースとして、あるいはネットワークデータベースに何か問題が起きた場合のバックアップデータベースとして、このアイデアが使われています。

 ネットワークデータベースは、さまざまなアプリケーションのビジネスデータを格納する永続的なリポジトリとして使われていますが、どのアプリケーションにも、ユーザーの画面設定など、ビジネスには関係のない多くのデータが入っています。このようなビジネスに関係のないデータをネットワークデータベースに格納することは、貴重なネットワーク資源とデータベース資源の無駄遣いです。この種のデータはアプリケーションの実行中のみ使用可能にすべきであり、これを実現するパーフェクトなソリューションがJava DBです。

 Java DBは、100パーセントJavaベースの軽量RDBMSで、標準のJava仮想マシンを使って実行できます。Java DBは軽量ですが、リレーショナルデータベースシステムのACID(Atomic, Consistent, Isolation, Durable:原子性、一貫性、独立性、耐久性)特性を満たしています。従って、コミット済みのデータを失ったり、破壊の危険にさらされることなく、クラッシュ前のデータを復元することができます。Java DBは、SQLやJDBCなど、すべてのリレーショナルデータベース標準をサポートしています。その結果、プラットフォームに依存せず、標準に準拠しているあらゆるデータベースと相互運用性があります。

 Java DBにはさまざまな機能がありますが、なかでも開発者の関心を引くのは、XMLファイルを使ってXMLスキーマをその場で作成し、SQLを使わずにテーブルに行を挿入できる機能です。従来はJavaからDMLステートメントを処理するときにはSQLを使っていましたが、Java DBではSQLを使わずに同じ処理を実行できます。本稿では、Swingを使って組み込みデータベース内のユーザー設定を保管および取得するアプリケーションサンプルを交えて、これらの機能を詳しく解説します。

DdlUtilsコンポーネント

 Javaパーサーは、複雑に入り組んだXML文書の構文解析とナビゲーションを行うためのプログラムです。本稿で取り上げるDdlUtilsコンポーネントは、それと同じ概念に基づいて、データベーステーブル内でのデータナビゲーションと操作をJavaコードからダイレクトに行うことができます。DdlUtilsを使うと、データベーススキーマ全体をXML形式でその場で作成することができます。さらにDdlUtilsは、XMLまたはJavaオブジェクトに対する既存のスキーマのリバースエンジニアリングもサポートしています。これにより、トランザクション管理や同時性やバックアップなどのデータベース管理機能をJava DBに担当させ、このデータベースとのやり取りをDdlUtilsで処理するというアーキテクチャが可能になります。

XMLスキーマをその場で作成する

 Java DBには、アプリケーションが起動したときにデータベースを作成し、データファイルのディレクトリを削除するだけでデータベースを削除できる機能があります。このアプローチにより、データベースはもはや独立したエンティティではなく、コードの一部になるため、排他的に制御することができます。本稿では、分かりやすいようにゴルフ場検索アプリケーションを作成しながらJava DBのこれらの機能を解説します。サンプルアプリケーションを起動すると、組み込みのJavaデータベースも一緒に起動します。アプリケーションを終了すると、データベースも一緒に終了します。このサンプルアプリケーションはデスクトップアプリケーションですが、標準のJavaなので、プラットフォームに依存せずに実行できます(例えば、モバイルアプリケーションとしても十分に活用できます)。

 まず、本稿のサンプルファイルをダウンロードします。ここには、「derby.jar」(Java DB)と「DdlUtils.jar」が入っています。その他のコードはJakarta Commonsから入手したもので、コードのコンパイルに役立ちます。

 次に、http://db.apache.org/torque/dtd/database.dtdで公開されているスキーマの規則に従って、データベーススキーマのXMLファイルを作成します。DdlUtilsを使ってDatabaseモデルのJavaオブジェクトにこのXMLを読み込んで構文解析します。

 次のコードは、XMLで作成したゴルフ場検索アプリケーションのデータベーススキーマです。

<!DOCTYPE database SYSTEM "http://db.apache.org/torque/dtd/database.dtd">
<database name="testdb">
  <table name="userData">
      <column name="userName"
              type="VARCHAR"
              primaryKey="true"
              size="20"
              required="true"/>
      <column name="password"
              type="VARCHAR"
              size="20"
              required="true"/>
  </table>

 次のコードによって、上記のXMLからDatabaseモデルのJavaオブジェクトが作成されます。

// filename represents the database schema in XML format
public Database readDatabaseFromXML(String fileName)
{
    return new DatabaseIO().read(fileName);
}

 最後に、Platformクラスを使ってデータベーステーブルを作成します。

// derby is synonym for Java DB
Platform platform = PlatformFactory.createNewPlatformInstance("derby");
platform.createTables(conn, database, true, true);

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

あなたにオススメ

著者プロフィール

  • Raghu Donepudi(Raghu Donepudi)

    Global Computer Enterprisesの主任システム開発者。テキサス州のラマー大学にてコンピュータ工学の修士号を取得。Sun認定Java開発者であり、ソフトウェア設計テクニックについての著作多数。

  • japan.internet.com(ジャパンインターネットコム)

    japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.c...

バックナンバー

連載:japan.internet.com翻訳記事

もっと読む

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5