SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

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

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

SQLを使わずにテーブルにデータを挿入する

 DdlUtilsは、DynaBeanクラスに基づいてテーブル内のデータを変更します。一般的なbeanには固定のプロパティと、それらのプロパティに対するsetterメソッドとgetterメソッドがあります。DynaBeanでは、その名の通り、beanのプロパティを動的に作成することができます。DynaBeanは、値だけでなく、名前とデータ型も動的に変更可能なプロパティをサポートするJavaオブジェクトです。今回のサンプルでは、基になるテーブルの列の名前と列の値をプロパティとします。

 次のコードでは、テーブル内のデータを表すJavaオブジェクトが作成され、Platformクラスを使ってそのデータがテーブルに挿入されます。

//insert data into table without SQL insert statement
DynaBean userData = database.createDynaBeanFor("userData", false);
userData.set("userName",     "tiger");
userData.set("password",     "singh");
platform.insert(conn, database, userData);

 このコードテクニックにより、java.sql.Statementjava.sql.ResultSetを作成する煩雑さがなくなります。さらに重要なことに、カーソルがクローズしているかどうかを確認する必要がなくなります(これ以外の方法を使う場合は、最大オープンカーソル数の超過によるアプリケーションの異常終了を防ぐために、すべてのカーソルがクローズしているかどうかを確認する必要があります)。

PlatformクラスとDatabaseクラス

 「derby.jar」の中でも特に重要なのがPlatformクラスとDatabaseクラスです。

 Platformインターフェイスは、クエリや操作などDMLステートメントを処理するためのデータベース関連の機能を提供します。また、特定のプラットフォームに固有のSQLビルダも入っています。DdlUtilsには、データベースプラットフォームごとに個別の実装クラスが用意されています。例えば、サンプルアプリケーションで使用したプラットフォームは「Derby」です。

 DatabaseクラスはDatabaseモデル(つまりデータベース内のテーブル)を表します。また、テーブルに格納されているオブジェクトのDynaBeansを作成するための対応する動的クラスも入っています。Tableクラスは、その名の通り、データベーステーブルのJavaオブジェクトを表します。DDLステートメントはすべて、DatabaseクラスとTableクラスを使って処理することができます。

アプリケーションを実行する

 DdlUtilsはまだ開発中であり、本稿の執筆時点ではバイナリ版がリリースされていないので、リポジトリからコードを取得してビルドを実行するか(方法2)、サンプルファイル内の「extjars」フォルダにあるjarsを使用してください(方法1)。

 次に、この2つの方法の手順を紹介します。

 方法1:

  1. サンプルファイルをCドライブまたはDドライブにインストールします。
  2. 「cp.bat_txt」を「cp.bat」という名前に変更します。
  3. 「cp.bat」を編集し、インストールディレクトリを書き換えます。
  4. コマンドプロンプトウィンドウを開き、「cp.bat」を実行します。
  5. 「<インストールディレクトリ>\demo」ディレクトリに移動します。
  6. コンパイルを実行します。$> javac MySimpleApp.java
  7. アプリケーションを実行します。$> java MySimpleApp DBSchema.xml

 方法2:

  1. developers.sun.comからJava DBをダウンロードします。
  2. http://db.apache.orgからDdlUtilsをダウンロードします。
  3. 現時点ではDdlUtilsのバイナリディストリビューションはないので、jakarta.apache.org/commonsから次のすべてのJakarta Commonsパッケージをダウンロードする必要があります。
    • commons-beanutils.jar
    • commons-betwixt-0.7.jar
    • commons-collections-3.1.jar
    • commons-digester-1.7.jar
    • commons-lang-2.1.jar
    • commons-logging.jar
  4. すべてのパッケージをクラスパスに指定し、サンプルファイル内の「MySimpleApp.java」をコンパイルして実行します。

 アプリケーションが起動すると、データベースのインスタンスが作成されます。そして、XMLファイルからデータベーススキーマが読み取られてスキーマが作成されます。2人のユーザーに関連するデータはDynaBeansを使って挿入されます。アプリケーションには、ユーザーからユーザー名とパスワードを集めるためのユーザーインターフェイスがあり、組み込みデータベースに格納されているパスワードとの照合が行われます(図1を参照)。

図1 tiger/singhまたはvijay/woodsを使ってログインする初期画面
図1 tiger/singhまたはvijay/woodsを使ってログインする初期画面

 ログインに成功すると、次の画面では、左側に利用可能な有名なゴルフ場、右側にユーザーがプレイしたことのあるゴルフ場の一覧が表示されます(図2を参照)。

図2 右側のリストに含まれているゴルフ場はJava DBから取得したもの
図2 右側のリストに含まれているゴルフ場はJava DBから取得したもの

 アプリケーションは、図2の画面を呼び出している間に、ユーザーがプレイしたゴルフ場の一覧をデータベースから読み取ります。データベースは組み込みモードで使われているので、アプリケーションが終了されると終了します。

可能性を考える

 組み込みのJavaデータベースで何が実現できるかは、ソフトウェアアーキテクトと開発者の想像力次第です。数年後には、Java DBを使ったダウンタイムのないインタラクティブなアプリケーションをたくさん目にすることになるでしょう。現時点では、Java DBを、Microsoft OfficeやOpenOfficeのオフィス文書用のリポジトリとして使用したり、新しいタイプのさまざまなのAJAXアプリケーションで使用したりする計画が進行中です。さらに重要なことに、Java DBは、モバイルアプリケーションのさまざまな機能的問題(データレプリケーションなど)の解決策にもなります。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

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

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Raghu Donepudi(Raghu Donepudi)

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/439 2006/08/22 15:49

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング