Kenji Tachibana's Weblog

« 前の日(Dec月 10日, 2008年) | 日付別メイン | 次の日(Dec月 12日, 2008年) »

http://blogs.sun.com/kenji/date/20081212 2008年 12月 12日 金曜日

JavaFX でデータベースに簡単にアクセスできるという事実 - その1

すみません... 某雑誌のテレビ CM っぽくタイトルを書いたのですが、そんなに大したことではありません。

JavaFX は、ご存じの通り、Java との親和性がとても高く (最終的に Java バイトコードに落ちます)、Java で作ったクラス等を使うことができます。ならば、せっかくかっこいい UI を JavaFX で作れるようになったのなら、DB につなぎたいなと思ってやってみました。一からがりがり書くのはさすがに辛いので、JDBC などのハンドルは、NetBeans が作ってくれるのをそのまま使いました。何もする必要がないので、試してみるにはめちゃめちゃ楽ですね。

とりあえず、とても簡単に、テキストフィールドとボタンを作り、値 (ID) を入れてボタンをクリックすると、他のフィールドの値を出力するという簡単なアプリケーションを作ってみようと思います。



その1: DB のセットアップ

まず最初にしなくてはならないのは、DB のセットアップです。DB がないとつなぐも何もないので。NetBeans を使うので、DB はバンドルされている derby にしました。NetBeans を長く使っている人なら、一度は操作したことがあるのではと思います。チュートリアルや、いろいろな方が既にいろいろなメディアで使い方を書いていますが、まあ、最初からやってみましょう (実は、私自身、よく忘れるので、blog にメモしておきたいのです)。もし derby をインストールしていないのなら、derby がバンドルされいている NetBeans のインストーラを持っていれば、それからインストールすることが可能です。ない場合は、再度、derby がバンドルされている NetBeans のインストーラをダウンロードする必要があります。

- NetBeans の「サービス」タブを開くと、「jdbc:derby://localhost:1527/...」というのがあると思います。これらが NetBeans がデフォルトで用意してくれているスキーマです。
- まず、接続の確認をします。[APP の app] となっているスキーマを右クリックし、「接続」を選択します。

これで、APP スキーマに接続する準備が整いました。( [APP の app] を開くと、「表」の下に、デフォルトで用意されているテーブルが表示されると思います。

次に JDBC (Java アプリケーションと DB をつなぐドライバ) の設定をします。

- 「サービス」タブに「ドライバ」があるので、「Java DB (Network)」を右クリックし、「接続」を選択します。
- 「データベースの新規接続」ダイアログがあがるので、下記の値を入力し、「了解」をクリックします。
o ホスト: localhost
o ポート: default
o データベース: sample
o ユーザ名: app
o パスワード: app
- スキーマ選択では、APP (デフォルト) を選び、「了解」をクリックします。

これでドライバの設定も完了です。



その2: Java 側の設定 - エンティティークラスの作成


次に Java 側の設定をします。 sample DB にアクセスし、値を取ってくる処理を行うコードを作成します。(実際は全部 NetBeans が作成してくれるので、何も書きません)

- 適当な Java Application プロジェクトを作成します。「ファイル」 -> 「新規プロジェクト」で、Java アプリケーションを選択し、デフォルトのまま完了させれば OK です。
- 作成されたプロジェクトの package を右クリックし、「新規」から、「データベースからのエンティティークラス」を選択します。
- 「データベース接続」で、つなげたい DB を選択し(今回は、[APP の app])、「使用可能な表」から、「CUSTOMER」を選んで、選択した表に移動します。

- 「次へ」をクリックします。
- 「持続性ユニットがありません」という警告がでていると思うので、「持続性ユニットを作成」を選びます。
- 「持続性ユニットを作成」ダイアログで「持続性ライブラリ」を 「TopLink」に指定し、「作成」ボタンをおします。
- 「データベースからのエンティティークラス」ダイアログに戻り、「完了」ボタンをクリックします。

これで、エンティティークラスが作成されました。



その3: Java 側の設定 - JPA コントローラクラスの作成


次に作成されたエンティティークラスを扱うためのコントロールクラスを作成します。これも、NetBeans が自動生成してくれます (すごい)。

- プロジェクトの package を右クリックし、「新規」から、「その他」を選択します。
- 「持続性」から、「エンティティークラスの JPA コントロールクラス」を選択し、「次へ」をクリックします。
- すべてのエンティティークラスを 「選択されているエンティティークラス」へ移動し、「次へ」をクリックします。

- 「完了」をクリックします。

これで、JPA コントローラクラスが作成されました。



その4: Java DB ドライバライブラリの追加


最後に Java DB ドライバライブラリの追加です。

- プロジェクトの「ライブラリ」を右クリックして、「ライブラリを追加」を選択します。
- 「Java DB ドライバ」を選択し、「ライブラリを追加」をクリックします。

これで準備がすべて整いました。



その5: Java 側の設定 - 確認


JavaFX 側の作成をするまえに、ちょっと DB へのアクセスを確認しておきましょう。新規プロジェクトを作った時に、Main.java も出来ていると思うので、それを使って DB にアクセスしてみます。
main を以下のようにして実行してみましょう。

public static void main(String[] args) {
// TODO code application logic here
CustomerJpaController test = new CustomerJpaController();
Customer idOne = test.findCustomer(1);
System.out.println(idOne.getName());
}

上記は、Customer テーブルから、id が "1" のものの、Name を表示しています。"JumboCom" が表示されれば成功です。

ふー、書きながらやっていると、時間かかりますねー。その 2 に続きますー(JavaFX はなしかよ!)

JavaFX ハンズンオンラボ - 資料再アップされました。

Sun Tech Days の JavaFX ハンズオンラボにご参加いただいたみなさまへ。

資料が web にアップされました! こちら から、ダウンロードできます。また、 プレゼン資料 もダウンロードできます。

せっかく貴重な時間を割いて参加してくださったのに、何も出来なかった方、本当に申し訳ありませんでした。是非、年末年始の空いた時間等を使ってチャレンジしてみてください。


Valid HTML! Valid CSS!

This is a personal weblog, I do not speak for my employer.