はじめに
サーバサイドで各種のデータを管理する場合、テキストファイルなどで済ませるケースはあまり多くないでしょう。やはり、ある程度以上の規模ともなれば、データベースで管理をすることになります。一般的には「SQL(Structured Query Language)」と呼ばれる問い合わせ言語を使ってデータベースに問い合わせを行うタイプのものが多用されます。このデータベースにSQLを使ってデータアクセスをする方法について説明をしていくことにしましょう。
対象読者
- Javaの基本(文法全般および基本的なクラスライブラリの使い方程度)をマスターしている人。
- サーバサイド(JSP、サーブレット)について基礎から勉強したい人。
- Eclipse WTPを使った開発に興味がある人。
Java DBの利用について
SQLに対応したデータベースは多数存在します。ここでは、Java 6よりJDKに標準で組み込まれることになった「Java DB」を利用してみます。Java DBは、Apache Foundationで「Derby」として開発されていたものです。
通常のSQLデータベースは、サーバとして起動し、そこにクライアントからアクセスするという形で利用をします。が、Java DBの場合、データベースサーバとしてプログラムを起動しクライアントからアクセスをするだけでなく、直接ライブラリを使ってデータベースにアクセスすることもできます。JDKに標準で組み込まれたことから、今後、Java DBの利用は広まっていくことでしょう。
また、SQLデータベースの利用方法は、データベースプログラムが違っていても基本的にはほぼ同じです。Java DBで基礎的な使い方をマスターすれば、他のデータベースプログラムでもその知識を応用して使えるようになります。
実際の開発に入る前に、Java DBを利用するために必要な下準備を行っておきましょう。これは、環境変数にJava DB(Derby)のホームディレクトリを登録しておく、という作業です。
システム環境変数の[詳細設定]タブにある[環境変数]ボタンをクリックし、環境変数の設定画面を呼び出してください。そして、システム環境変数の[新規]ボタンをクリックし、次のような変数を追加をしてください。
- 変数名:DERBY_HOME
- 変数値:C:\Program Files\Java\jdk1.6.0\db
なお、変数値のパスは、JDKを標準設定のディレクトリにインストールした場合です。場所を変更してインストールした場合はそれぞれの環境に合わせて適宜変更してください。
また、EclipseからTomcatを起動する関係上、Eclipseの起動に使っているJRE/JDKにJava DBのライブラリを追加しておきましょう。これは、Eclipseの起動で使っている(通常は、デフォルトで使用されるJRE)の「lib」フォルダ内の「ext」フォルダの中に、以下の2つのファイルをコピーしておきます。
- derby.jar
- derbyclient.jar
これらのファイルは、JDKの「db」フォルダ内の「lib」フォルダ内にあります。あるいは、classpathにこれらのファイルを追加してもよいでしょう。
接続プロファイルを作成する
では、Eclipse Web Tools Platform(以下、WTP)で、Java DBを利用してみることにしましょう。まずは、データベース関係の設定と、データベースの作成を行います。なお、Java DBを使う関係上、ここではJDK 6+WTP 2.0という組み合わせを使って説明を行うことにします。JDKに収められているJava DBに正式対応しているのはWTP 2.0からです。WTP 1.5でも利用できますが、表示や操作が異なる部分がありますので注意してください。
まず、データベース開発を行うためのパースペクティブに切り替えましょう。[ウインドウ]-[パースペクティブを開く]-[その他]メニューを選び、現れたダイアログから[データベース開発]を選びます。このパースペクティブでは、左側にデータベース管理を行うためのデータ・ソース・エクスプローラーが、下部に「SQLの結果」というビューが表示されます。これに、この後で作成するSQLファイルのエディタを加えて、3つのビューでデータベース開発を行うことになります。
WTPからデータベースを利用するには、「接続プロファイル」というものを作成する必要があります。これは、特定のデータベースにアクセスするための設定セットです。データ・ソース・エクスプローラーには「ODAデータ・ソース」「データベース」といったフォルダが表示されてますが、ここに、用意された接続プロファイルによって利用可能になったデータベース類が表示されるようになるのです。
では、接続プロファイルを作成しましょう。データ・ソース・エクスプローラーの上部にあるアイコンから「新規接続プロファイル」というものを探してクリックしてください。これで新規接続プロファイルの作成ウィザード選択画面が現れます。ここで[Derby組み込みデータベース]を選びます。
「接続プロファイルの作成」画面に進みます。ここで接続プロファイルの名前を入力します。ここでは「derby_mydata」としておきます。またウィザード終了後に自動接続するためのチェックボックスがあるので、これもオンにしておきましょう。
「ドライバーおよび接続の詳細の指定」画面に進みます。ここで、使用するドライバーを選択し、データベースの設定を行う……のですが、現段階ではまだドライバーの設定が用意されていないはずです。ドライバーを選択するドロップダウンリストの右端にある[…]ボタンをクリックしてください。「使用可能なドライバー定義」という画面が現れます。ここで、ドライバー定義を追加します。
ここで、[Derby]項目内の[10.2]を選択し、[追加]ボタンをクリックします。画面に更に新しいダイアログが開きます。ここで、使用可能なドライバー・テンプレートから[Derby][10.2]内の[Derby 10.0用 Derby組み込みJDBCドライバー]を選択して[OK]をクリックしてください。
画面にドライバーの詳細設定ダイアログが開きます。ここで次のように設定をしましょう。
項目 | 説明 |
ドライバー名 | Derby 10.2用 Derby組み込み JDBCドライバー |
ドライバー・ファイル | デフォルトで「derby.jar」が表示されています。これを選択し、[Jar/Zipの編集]ボタンをクリックして、「C:\Program Files\Java\jdk1.6.0\db\lib\derby.jar」を選択してください。 |
プロパティー | データベースに関するプロパティーです。それぞれ次のようにしておきます。 データベース名: mydatabase パスワード: test ユーザーID: user 接続URL: jdbc:derby:C:\DerbyDatabases\mydatabase;create=true |
注意してほしいのは「接続URL」です。これは通常、「jdbc:derby:データベース名;」という形で記述します。ここでは「mydatabase」という名前でデータベースを作成します。データベースは、Cドライブの「DerbyDatabase」というフォルダ内にデータベースを保管することにしてあるため、そのパスである「C:\DerbyDatabases\mydatabase;」がデータベース名に指定されます。
これでOKするとドライバー定義を作成し、再び「使用可能なドライバー定義」に戻ります。ここで、作成した「Derby 10.2用 Derby組み込み JDBCドライバー」が選択可能になっているはずです。これを選択して[OK]をクリックしてください。
これで、ようやく「ドライバーおよび接続の詳細の指定」画面に戻ります。ドロップダウンリストからは、作成した「Derby 10.2用 Derby組み込み JDBCドライバー」が選択できますので、これを選択してください。それ以降の項目(データベース、ロケーション、ユーザ名、パスワードなど)は自動的に設定されるはずです。それらを確認したら[接続テスト]ボタンをクリックしてみてください。「pingが正常に完了しました」と表示されれば、データベースへのアクセスに成功しています。もし失敗した場合は、ここまでの設定項目をよく確認してください。
成功したら、次へ進み、要約の内容を確認して間違いがないか確かめたら終了します。これで、「derby_mydata」という接続プロファイルが作成され、データ・ソース・エクスプローラーに表示されます。接続がうまくできていれば、その項目内に「mydatabase」というデータベースが表示されるはずです。もし接続が開始されていなければ、derby_mydataを右クリックし、<接続>メニューを選んで接続を開始します。