SpringJDBC を用いた JDBC プログラミング
このページでは,Eclipse を使って,Java 言語の JDBC プログラムを作る手順を, 見本となるプログラムと説明する. JDBC は,Java 言語でリレーショナルデータベースを操作するための手段として使う. この Web ページの要点は,素の JDBC よりも,SpringJDBC を使うほうが便利ということです.
-  リレーショナルデータベースの1つのレコード(行)を,1つの Java オブジェクトに対応 させます.
⇒ そのために,CommodityDso という名前のクラスを定義します. 
-  Java プログラムの中に SQL プログラムを埋め込みます..
⇒ そのために,JDBC を使う. 
-  SQL プログラムの評価結果は,テーブルのレコード(行)の集まりになる.
これを,Java のリスト (List) などに変換したい.
⇒ SpringJDBC を使うと簡単です. SpringJDBC とは,JDBC 抽象化フレームワークの機能を持ったソフトウェアで,Spring 2 の構成要素になっています. このページでは,SpringJDBC の使い方に焦点を当てます. * SpringJDBC にこだわる必然性はありません. 素の JDBC の機能だけでも,機能的に不足はありません 
-  SpringJDBC の機能を使う部分は,1つのクラスに集める
そのために,CommodityDao という名前のクラスを定義します. つまり,データベースの操作は,必ず CommodityDao を経由する.SpringJDBC の流儀に従って書くのは,CommodityDao クラスだけということになる. 
ここに書いたプログラムは,PostgreSQLで 動く.ごく簡単な設定の変更でMySQLや Java DBや他のリレーショナルデータベースソフトウェアでも動く.
必要となるソフトウェア
-  Windows での Java JDK 18 (Java SE Development Kit 18) のインストールが済んでいること。
C:\Program Files\Java\jdk1.6.0_11 のようなディレクトリがあれば,インストール済み。 
- Eclipse のWebページの記述に従って,Eclipse のインストールが終わっていること.
- Eclipse の SpringIDE プラグイン がインストール済みであること
- Spring 2 インストールのWebページの記述に従って,Spring 2 のインストールを終えていること。
-  リレーショナルデータベース・ソフトウェアのインストールが済んでいること.
インストールしていないときは,下記の Web ページを参考に,インストールを済ませておくこと. 
あらかじめ決めておく事項と設定内容
Spring 2 インストールディレクトリを確認しておく。 このページでは,次のように書く。
- Spring 2 インストールディレクトリ: C:\Program Files\Java\spring-framework-2.5
設定内容について.この Web ページに掲載するプログラムは,下記の設定である. 設定が違う場合には,プログラムを書き換える(書き換えは難しくは無い).
-  PostgreSQL の利用 を使う場合
データベース名と, PostgreSQL にログインするために使うデータベース・一般ユーザのアカウント(ユーザ名とパスワード)を決めておくこと. このページでは,次のように書く. -  データベース名: testdb
使用するデータベースの名前のことを,「データベース名」と呼ぶことにする. データベース名は,自由に決めてよいが,半角文字(つまり英字と英記号)を使い,スペースを含まないこと, すでに存在するデータベースを使ってもいい(つまり,既存のデータベースのデータベース名を使う)し,新しいデータベースを作ることにしてもいいです. 
-  PostgreSQL にログインするために使うデータベース・一般ユーザのアカウント(ユーザ名とパスワード)
- ユーザ名: testuser
- パスワード: hoge$#34hoge5
 データベース名 testdb の権限を持ったユーザにして下さい.(そうで無いとエラーが出ます). この Web ページの手順を試すために,新しいデータベースと,新しい一般ユーザのアカウントを作りたいという場合は, phpPgAdmin などを使ってください. psql のようなコマンドライン・クライアントを使う場合には,次のようになります(エンコーディングについて調べきっていません.まだ不完全です.参考情報ということでご理解下さい). CREATE ROLE testuser LOGIN PASSWORD 'hoge$#34hoge5' NOINHERIT VALID UNTIL 'infinity'; CREATE DATABASE testdb WITH ENCODING='UTF8' OWNER=testuser; パスワードは,説明を簡単にするために hoge$#34hoge5 と書いているが,実際には,これとは違うものを,必ず適切に設定してください. 
 PostgreSQL の利用 を使うために,次の設定を行うことになるので,確認しておく. - JDBC ドライバ: org.postgresql.Driver (PostgreSQL に依存する値)
-  PostgreSQL 用 JDBC の jar ファイル:c:\Program Files\psqlJDBC\postgresql-8.3-603.jdbc4.jar
PostgreSQL 用 JDBC の Java ファイルが存在するディレクトリ C:\Program Files\psqlJDBC を探すとすぐに見つかります. 
 
-  データベース名: testdb
-  MySQL の利用 を使う場合
データベース名と,MySQL にログインするために使うデータベース・一般ユーザのアカウント(ユーザ名とパスワード)を, このページでは,次のように書く. -  データベース名: testdb
使用するデータベースの名前のことを,「データベース名」と呼ぶことにする. データベース名は,自由に決めてよいが,半角文字(つまり英字と英記号)を使い,スペースを含まないこと, すでに存在するデータベースを使ってもいい(つまり,既存のデータベースのデータベース名を使う)し,新しいデータベースを作ることにしてもいいです. 
-  MySQL にログインするために使うデータベース・一般ユーザのアカウント(ユーザ名とパスワード)
- ユーザ名: testuser
- パスワード: hoge$#34hoge5
 データベース名 testdb の権限を持ったユーザにして下さい.(そうで無いとエラーが出ます). この Web ページの手順を試すために,新しいデータベースと,新しい一般ユーザのアカウントを作りたいという場合は, MySQL コマンドライン・クライアントの主な機能 や MySQL GUI Tools などを使い,次のコマンドを実行してください. * それぞれのツールの操作法(起動法,ログインの方法など)は,MySQL コマンドライン・クライアントの主な機能 や MySQL GUI Tools の Web ページを見てください. create database 'testdb' default character set cp932 collate cp932_japanese_ci; create user testuser identified by 'hoge$#34hoge5'; grant all on testdb.* to 'testuser'; パスワードは,説明を簡単にするために hoge$#34hoge5 と書いているが,実際には,これとは違うものを,必ず適切に設定してください. 
 MySQL の利用 を使うために,次の設定を行うことになるので,確認しておく. - JDBC ドライバ: org.gjt.mm.mysql.Driver (MySQL に依存する値)
-  MySQL 用 JDBC の jar ファイル名:  C:\Program Files\Java\mysql-connector-java-5.1.6\mysql-connector-java-5.1.6-bin.jar
JDBC で MySQL を使うために必要になるので、 https://dev.mysql.com/downloads/connector/ から Connector/J をダウンロードして、解凍しておく(展開(解凍)するディレクトリは何でもよい。この資料では上記のディレクトリにあるものとして説明する)。 ダウンロードの手順は, 「MySQL コネクタ (Connector) Java のダウンロード」の Web ページで説明している. 
 
-  データベース名: testdb
- 
Java DB を使う場合
次の設定を確認しておく. -  Java DB データベースディレクトリ(相対): dbdir
Java DB のデータベースファイルが置かれるディレクトリのことです. これは自由に決めてよいが,半角文字(つまり英字と英記号)を使い,スペースを含まないこと, データベース名と Java DB データベースディレクトリとは別ものです.混同しないこと. なお,Java DB データベースディレクトリは,「dbdir」 のように,相対パス形式で書く場合と,「C:\hoge\dbdir」のように,絶対パス形式で書く場合があります. 今回は,相対パス形式で書く. 
-  データベース・ロケーション: C:\Program Files\eclipse3.5\eclipse\dbdir
データベース・ロケーションとは, データベースファイルが置かれる実際のディレクトリのことです. Java DB データベースディレクトリを,「dbdir」のような相対パス形式にする場合, データベース・ロケーションは,Eclipse インストールディレクトリである C:\Program Files\eclipse3.5\eclipse のサブディレクトリになる. (一方で,絶対パス形式の場合は,データベース・ロケーションは,Eclipse インストールディレクトリと無関係になります). このデータベース・ロケーションは, Eclipse インストールディレクトリと,Java DB データベースディレクトリ(相対)を連結したものになる. 
- JDBC ドライバ: org.apache.derby.jdbc.EmbeddedDriver (Java DB に依存する値)
-  Java DB 用 JDBC の jar ファイル:C:Program Files\eclipse3.5\eclipse\plugins\org.apache.derby.core_10.5.1\derby.jar
Java DB (Derby) インストールのときに,Eclipse プラグインもインストールしますが,その中に Java DB 用 JDBC の jar ファイルが含まれています. 
 
-  Java DB データベースディレクトリ(相対): dbdir
テスト用データベースの作成
テスト用データベースとして,下記の SQL コマンドで,テーブル commodity が作られ,データが入っていること.
create table commodity (
    id integer primary key not null,
    name varchar(32) not null,
    price integer );
insert into commodity values( 1, 'apple', 50 );
insert into commodity values( 2, 'orange', 20 );
insert into commodity values( 3, 'strawberry', 100 );
insert into commodity values( 4, 'watermelon', 150 );
insert into commodity values( 5, 'melon', 200 );
insert into commodity values( 6, 'banana', 100 );
select * from commodity;
Eclipse での Spring JDBC プログラムの作成手順
以下,Eclipse を使う. プロジェクトの作成,クラスの定義と実行という一連の操作を,図解で説明する.
Eclipse の使用にあたって,事前に決めておく事項
Eclipse のプロジェクト等を作る. このページでは,プロジェクト名,パッケージ名は次のように記述します. (すでに同じ名前のプロジェクトがある,といったときは,プロジェクト名を変えてください).
- プロジェクト名: HelloWorld
- パッケージ名: hoge.hoge.com
プロジェクトの新規作成
下記の手順で,プロジェクトを新規に作成する.
-  (もし,プロジェクト・エクスプローラが開いていなければ)プロジェクト・エクスプローラを開く
「ウインドウ (Window)」→「ビューの表示 (Show View)」→「プロジェクト・エクスプローラ (Project Explorer)」 と操作する. 
-  プロジェクトの新規作成の開始
「ファイル」→「新規 (New)」→「プロジェクト (Project)」 
 または,プロジェクト・エクスプローラ内で,右クリック→「新規 (New)」→「プロジェクト (Project)」
-  「Java」の展開
新規プロジェクトのウインドウが開くので, 「Java」を展開する.   
-  「Java プロジェクト」の選択
展開した「Java」の下にある 「Java プロジェクト」を選び,「次へ」をクリック.   
-  プロジェクト名の指定
新規Javaプロジェクトのウインドウが開くので,プロジェクト名を付ける(1行目). プロジェクト名には好きにつけて良いが,全角文字は避ける.分かりやすい名前が良い.   
-  Java 設定
Java 設定はデフォルトのままでよい.「終了」をクリック   
-  パースペクティブ
もし,「関連付けられたパースペクティブを開きますか?」というウインドウが開いたら,パースペクティブを開きたいので,「はい」をクリック.   
(Java DB (Derby) を使うときのみ) Apache Derby ネーチャーの追加と,サーバの開始
Java DB (Derby) を使うときに限り,プロジェクトへのApache Derby ネーチャーの追加 と,Java DB (Derby) サーバの開始を行う. これは, Java DB (Derby) を使うための追加的な設定です.
- プロジェクト・エクスプローラで,プロジェクト名 HelloWorld を右クリック.
-  「Apache Derby」→「Apache Derby ネーチャーの追加」
「Apache Derby」が候補として現れないときは, Java DB (Derby) インストール の手順に従って,インストールと設定を行う. 
-  「Apache Derby」→「Derby ネットワーク・サーバの開始」
ポート1527 で Derby サーバが起動します. 「Derby ネットワーク・サーバの開始」が選べない状態になっているときは, すでに開始済みなので,この手順は不要. 
リレーショナルデータベース・ソフトウェアとして,Java DB (Derby) 以外を使う場合は,上記は不要です.
プロジェクトへの Spring プロジェクト・ネーチャーの追加
今度は,Spring JDBC を使うための設定です.
プロジェクトへの Spring プロジェクト・ネーチャーの追加を,次の操作で行う.
- プロジェクト・エクスプローラで,プロジェクト名 HelloWorld を右クリック.
-  「Spring ツール (Spring Tools)」→「Spring プロジェクト・ネーチャーの追加」と操作.
「Spring ツール (Spring Tools)」が候補として現れないときは, Eclipse の SpringIDE プラグイン の手順に従って,インストールを行う. 
-  プロジェクトの下に,「Spring Elements」が増えるので確認しておく.
プロジェクト名 HelloWorld の左横の 「+」をクリックして展開すると, 「Spring Elements」が増えている. (Spring プロジェクト・ネーチャーの追加ができたことが分かる).   
プロジェクトへの外部 jar ファイルの追加
次の2種類の jar ファイルを,プロジェクトに追加します.
-  Spring 2 の jar ファイル
Spring 2 を Eclipse から使えるようにするために, Spring 2 の jar ファイルを,外部 jar として追加します. 追加すべき jar ファイルは,次の 2 つです. C:\Program Files\Java\spring-framework-2.5\dist\spring.jar C:\Program Files\Java\spring-framework-2.5\lib\jakarta-commons\commons-logging.jar 
-  リレーショナルデータベースシステムに付属の JDBC の jar ファイル
JDBC を使いリレーショナルデータベース・ソフトウェアと接続できるようにするため,リレーショナルデータベース・ソフトウェアに付属の JDBC ファイルを,外部 jar として追加する必要がある. (JDBC ファイルは,使用するリレーショナルデータベース・ソフトウェアごとに違う,ということ). 
外部 jar ファイルを,プロジェクトに追加する手順を下記に示す.
- プロジェクト・エクスプローラで,プロジェクト名 HelloWorld を右クリック.
-  「プロパティー」→「Java コンパイラー」→「Java のビルド・パス」→「ライブラリー」
  
-  「外部 JAR の追加」をクリック
  
-  Spring 2 に関する次の 2 つの jar ファイルを外部 jar として追加
C:\Program Files\Java\spring-framework-2.5\dist\spring.jar C:\Program Files\Java\spring-framework-2.5\lib\jakarta-commons\commons-logging.jar 上記のファイルが現れないときは,Spring 2 インストール の手順に従ってインストールを行う. 
-  JDBC の jar ファイルを追加.
-  PostgreSQL の場合:
C:\Program Files\psqlJDBC\postgresql-8.3-603.jdbc4.jar を追加する. 
-  MySQL の場合:
C:\Program Files\Java\mysql-connector-java-5.1.6\mysql-connector-java-5.1.6-bin.jar を追加する. JDBC の jar ファイルが無い,というときは,MySQL Connector Java のダウンロードの Web ページを見てください. 
-  Java DB の場合:
C:Program Files\eclipse3.5\eclipse\plugins\org.apache.derby.core_10.5.1\derby.jar を追加する. 
 
-  PostgreSQL の場合:
-  外部 JAR の確認
外部 JAR システムを確認したいときは,プロジェクト・エクスプローラで,「Java リリース; src」の下の,「ライブラリー」を展開する. 
パッケージ作成
Eclipse のプロジェクト・エクスプローラを使って, パッケージを作成します. パッケージ名には hoge.hoge.com のようなドメイン名を付ける習慣があることに注意してください. このページでは,作成するパッケージ名は,hoge.hoge.com と書く. (パッケージ名を変えるときは,読み替えてください).
-  (もし,プロジェクト・エクスプローラが開いていなければ)プロジェクト・エクスプローラを開く
「ウインドウ」→「ビューの表示」→「プロジェクト・エクスプローラ」 と操作する. パッケージの作成,クラスの作成などの作業は,プロジェクト・エクスプローラで行う. 
-  パッケージを新規作成すべきプロジェクトの選択
プロジェクト・エクスプローラに,プロジェクト一覧が表示されているはずです. パッケージを新規作成したいプロジェクト名 HelloWorld を右クリックして, 「新規」→「パッケージ」と操作する.   
-  パッケージ名の設定
名前のところに,パッケージ名 hoge.hoge.com を設定し,「終了」をクリックする.   
-  パッケージの確認
プロジェクト・エクスプローラにおいて, パッケージ hoge.hoge.com が増えていることを確認する.   
クラス定義
Spring JDBC のサンプルプログラムとして,次の4つのクラスを定義します.
-  CommodityDso
データ格納用クラス テーブル Commodity の1タップル(行)を格納するためのオブジェクト 
-  CommodityDao
データ操作用クラス テーブル Commodity に関わる操作(テーブル Commodity の1タップル,複数タップル等を出力する) 
-  DataSourceFactory
JDBC ドライバ名,データベース名などの定義 
-  HelloWorld
データ操作用クラス CommodityDao のメソッドを呼び出して結果を表示 
クラス定義の手順は次の通りです. 前準備として,パッケージ hoge.hoge.com を作成済みであること.
-  クラス定義の開始
プロジェクト・エクスプローラにおいて, クラスを定義したいパッケージ名 hoge.hoge.com を右クリック.その後, 「新規」→「クラス」と操作する. * 「新規」を選んだとき,「クラス」が現れないことがあります. そのときは, 「新規」→「その他」→「Java」→「クラス」と操作する. プロジェクト・エクスプローラで, パッケージ名 hoge.hoge.comが表示されていないときは, プロジェクト名の下の 「Java リソース; src」または「src」の下を展開して下さい.   
-  定義すべきクラス名等の指定
Java パッケージ名,クラス名を入力できるウインドウが開くので,設定を行う. - 「パッケージ (package)」(2行目の「パッケージのところ): パッケージ名 「hoge.hoge.com」を設定.(「hoge.hoge.com」になっていなければ修正すること).
- 「クラス名」(4行目の「名前」のところ): ここでは,HelloWorld と書いている.
-  「public static void main(String[] args)」: チェックする
  
-  上記の「クラスの新規作成」の操作を,4つのクラスについて繰り返す.
新規作成すべきクラスは,CommodityDso, CommodityDao, DataSourceFactory, HelloWorld の 4 つである. 
 
-  クラスファイル一覧の表示
プロジェクト・エクスプローラで, パッケージ名 hoge.hoge.com の左横の「+」をクリックすると, クラスファイル一覧が表示されます. 
-  定義したいクラスのファイルを開く
Eclipse のプロジェクト・エクスプローラで,定義したいクラスの「クラス名.java」 をダブルクリックします. すると,エディタが開きます. 
-  エディタでクラス
CommodityDso,
CommodityDao,
DataSourceFactory,
HelloWorld を定義する.
下記のクラス定義をカットアンドペーストして使ってください. (パッケージ名を「hoge.hoge.com」と書いているので,パッケージ名を別の名前にしている場合には,適切に読み替えてください). 
-  ソースを保存
「ファイル」→「保管」または CTRL+S で保存される. 保存時にコンパイルされる コンパイル時のエラーや警告があれば, Eclipse 内の問題・ビューに表示されるので確認する. 
CommodityDso.java
テーブル Commodity の1タップル(行)を格納するためのオブジェクト
CommodityDso クラスを新規作成したら,下記のプログラムをカット&ペースト.
----------------------ここから--------------------
package hoge.hoge.com;
public class CommodityDso {
    // リレーショナルデータベースの1つのレコード(行)を,1つの Java オブジェクトに対応させる
    // Commodity テーブルのレコード(行)用に,CommodityDso という名前のクラスを定義する.
    
    private Integer type;
    private String name;
    private Integer price;
   
    public Integer getType() {
        return type;
    }
    public void setType(Integer type) {
        this.type = type;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getPrice() {
        return price;
    }
    public void setPrice(Integer price) {
        this.price = price;
    }
}
----------------------ここまで----------------------
CommodityDao.java
テーブル Commodity に関わる操作(テーブル Commodity の1タップル,複数タップル等を出力する)
CommodityDao クラスを新規作成したら,下記のプログラムをカット&ペースト.
----------------------ここから--------------------
package hoge.hoge.com;
import java.sql.*;
import java.util.List;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.jdbc.core.simple.ParameterizedRowMapper;
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
public class CommodityDao {
        // 使用するテーブル名
        final private static String TABLE = "Commodity";
        // private で SimpleJdbcTemplate オブジェクトを定義して,他のメソッドで使う,というのが決まり文句(詳しくは Spring のマニュアル)
        private SimpleJdbcTemplate jdbcTemplate;
       
    public void setDataSource(org.springframework.jdbc.datasource.DriverManagerDataSource dataSource) {
        this.jdbcTemplate = new SimpleJdbcTemplate(dataSource);
    }
   
    //
    // 更新の例(1行挿入.値の更新)
    //
    public void insertTuple(int type, String name, int price) {
        this.jdbcTemplate.update("insert into " + TABLE + " values ( " + type + ", '" + name + "', " + price + " )");
    }
   
    public void setName(int type, String name) {
        this.jdbcTemplate.update("update " + TABLE + " set name = ? where type = ?", new Object[] {name, new Integer(type)});
    }
    //
    // 問い合わせ
    //
   
    // タップル数
    public int getCount() {
        return this.jdbcTemplate.queryForInt("select count(*) from " + TABLE);
    }
   
    // 選択条件の無い4つの問い合わせ
    // ■ 結果が,単純値のリスト
    //     type のリスト
    public List<Map<String,Object>> getAllType() {
      return this.jdbcTemplate.queryForList("select type from " + TABLE);
    }
    //     name のリスト
    public List<Map<String,Object>> getAllName() {
        return this.jdbcTemplate.queryForList("select name from " + TABLE);
    }
    //     price のリスト
    public List<Map<String,Object>> getAllPrice() {
        return this.jdbcTemplate.queryForList("select type from " + TABLE);
    }
    // ■ 結果が,タップルのリスト
    public List<Map<String,Object>> getAllTuple() {
        return this.jdbcTemplate.queryForList("select * from " + TABLE);
    }
    // ■ 結果が,CommodityDso オブジェクトのリスト (つまり,結果が Java の CommodityDso オブジェクトに格納されている)
    public List<CommodityDso> getAllCommodity() {   
        return this.jdbcTemplate.query(
                "select * from " + TABLE,
                new org.springframework.jdbc.core.simple.ParameterizedRowMapper<CommodityDso>() {
                    public CommodityDso mapRow(ResultSet rs, int rowNum) throws SQLException {
                        CommodityDso c = new CommodityDso();
                        c.setType(rs.getInt("type"));
                        c.setName(rs.getString("name"));
                        c.setPrice(rs.getInt("price"));
                        return c;
                    }
                });
    }
   
    // ■ 選択条件あり.price で選択したときのタップル数
    public int getCountByPrice( int price ) {
        return this.jdbcTemplate.queryForInt("select count(*) from " + TABLE + " where price = ?", price);
    }
    // 選択条件あり.type で選択して,CommodityDso オブジェクトを出力
    // (type が主キーなので CommodityDso オブジェクトは1つになる)
    public CommodityDso selectNameByType( int type ) {   
            return this.jdbcTemplate.queryForObject(
                "select * from " + TABLE + " where type = ?",
                new org.springframework.jdbc.core.simple.ParameterizedRowMapper<CommodityDso>() {
                    public CommodityDso mapRow(ResultSet rs, int rowNum) throws SQLException {
                        CommodityDso c = new CommodityDso();
                        c.setType(rs.getInt("type"));
                        c.setName(rs.getString("name"));
                        c.setPrice(rs.getInt("price"));
                        return c;
                    }
                },
                type );
    }
}
----------------------ここまで----------------------
DataSourceFactory.java
JDBC ドライバ名,データベース名などの定義を行うクラスです. DataSourceFactory.java は,PostgreSQL 用になっているので,他のリレーショ ナルデータベースシステムを使うときは,先頭部分を書き換えることを忘れないこと.
Eclipse で DataSourceFactory クラスを新規作成したら,下記のプログラムをカット&ペースト.
JDBC プログラムで,データベースシステムと接続するとき, 新しいデータベースを作るには,「;create=true」を付ける.
----------------------ここから----------------------
package hoge.hoge.com;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
public class DataSourceFactory {
        // 決まり文句 (ドライバクラス)
    final private static String PostgresJDBCDriver = "org.postgresql.Driver";
    final private static String MySQLJDBCDriver = "org.gjt.mm.mysql.Driver";
    final private static String JavaDBJDBCDriver = "org.apache.derby.jdbc.EmbeddedDriver";
    final private static String HiRDBDriver = "JP.co.Hitachi.soft.HiRDB.JDBC.PrdbDriver";
    // 下記の変数を正しく設定する
    // DBNAME, DBDIR, USER, PASS, JDBCDriver, DBURL
        // PostgreSQL 用デフォルト
        // Eclipse で PostgreSQL を使いたいときは,次の手順で,WebContent\WEB-INF\lib にインポートしておく.
        //     WebContent\WEB-INF\lib を右クリック.「一般」→「ファイルシステム」
        //     その後インポートすべきファイルとして,次のファイルを指定
        //       C:\Program Files\psqlJDBC\postgresql-8.3-603.jdbc4.jar
        final private static String DBNAME = "testdb"; // Database Name
        final private static String USER = "testuser"; // user name for DB.
        final private static String PASS = "hoge$#34hoge5"; // password for DB.
        final private static String JDBCDriver = PostgresJDBCDriver;
        final private static String DBURL = "jdbc:postgresql://localhost/" + DBNAME;
        // MySQL 用デフォルト
        // Eclipse で MySQL を使いたいときは,次の手順で,WebContent\WEB-INF\lib にインポートしておく.
        // https://dev.mysql.com/downloads/connector/ から,Connector/J をダウンロード
        // c:\Program Files\Java\mysql-connector-java-5.1.6\ に置く.
        //     WebContent\WEB-INF\lib を右クリック.「一般」→「ファイルシステム」
        //     その後インポートすべきファイルとして,次のファイルを指定
        //       c:\Program Files\Java\mysql-connector-java-5.1.6\mysql-connector-java-5.1.6-bin.jar を追加
        // final private static String DBNAME = "testdb"; // Database Name
        // final private static String USER = "testuser"; // user name for DB.
        // final private static String PASS = "hoge$#34hoge5"; // password for DB.
        // final private static String JDBCDriver = MySQLJDBCDriver;
        // final private static String DBURL = "jdbc:mysql://localhost/" + DBNAME;   
        // JavaDB用デフォルト
        // final private static String DBNAME = "dbdir;create=true"; // Java DB の場合は,Java DB データベースディレクトリ(相対)
        // final private static String DBDIR = "C:\\Program Files\\eclipse3.5\\eclipse\\"; // データベースが存在するディレクトリ
                // DTP, DBViewer などを使ってデータベースを生成した場合は Eclipse インストールディレクトリ
                // ij などを使ってデータベースを生成した場合は,c:\\<ワークスペース>\\<プロジェクト名>
        // final private static String USER = ""; // user name for DB. Java DB (Derby) の場合は空
        // final private static String PASS = ""; // password for DB. Java DB (Derby) の場合は空
        // final private static String JDBCDriver = JavaDBJDBCDriver;
        // final private static String DBURL = "jdbc:derby:" + DBDIR + DBNAME;
        // HiRDB用デフォルト
        // Eclipse で HiRDB を使いたいときは,次の手順で,WebContent\WEB-INF\lib にインポートしておく.
        //     WebContent\WEB-INF\lib を右クリック.「一般」→「ファイルシステム」
        //     その後インポートすべきファイルとして,次のファイルを指定
        //       C:\win32app\hitachi\hirdb_s\CLIENT\UTL\pdjdbc.jar
        // ユーザ名,パスワード: C:/windows/HiRDB.iniのPDUSER の値を調べておく
        // final private static String USER = "ユーザ名"; // user name for HiRDB. see C:/windows/HiRDB.ini
        // final private static String PASS = "パスワード"; // password for HiRDB. see C:/windows/HiRDB.ini
        // final private static String JDBCDriver = HiRDBDriver;
        // final private static String HiRDBServerName = "hitachi-664320D"; // HiRDB サーバのコンピュータ名
        // final private static String DBURL = "jdbc:hitachi:PrdbDrive://DBID=22200,DBHOST=" + HiRDBServerName + ",ENCODELANG=MS932"; // 'DBID=22200' is in "conf\pdsys";
        DriverManagerDataSource connect() {
                org.springframework.jdbc.datasource.DriverManagerDataSource dataSource = new DriverManagerDataSource();
                dataSource.setDriverClassName((String)JDBCDriver);
                dataSource.setUrl(DBURL);
                dataSource.setUsername(USER);
                dataSource.setPassword(PASS);
                return dataSource;
        }
}
----------------------ここまで----------------------
HelloWorld.java
データ操作用クラス CommodityDao のメソッドを呼び出して結果を表示
HelloWorld クラスを新規新規作成したら,下記のプログラムをカット&ペースト.
----------------------ここから--------------------
package hoge.hoge.com;
import java.sql.*;
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
public class HelloWorld {
            public static void main(String[] args) {
            DataSourceFactory dataSourceFactory = new DataSourceFactory();
            DriverManagerDataSource dataSource = dataSourceFactory.connect();
       
            CommodityDao e = new CommodityDao();
            e.setDataSource(dataSource);
            // テーブル定義
            // 「Commodity テーブルが無い」というようなエラーメッセージが出た場合の回避策として,
            // 「e.doExecuteSample();」を1度実行して,テーブルを定義する.
            // e.doExecuteSample();
            // 問い合わせ実行
            System.out.println(" getCount() = " + e.getCount() );
            System.out.println(" getAllType() = " + e.getAllType() );
            System.out.println(" getAllName() = " + e.getAllName() );
            System.out.println(" getAllPrice() = " + e.getAllPrice() );
            System.out.println(" getAllTuple() = " + e.getAllTuple() );
            System.out.println(" getAllCommodity() = " + e.getAllCommodity() );
           
            // 更新と問い合わせ実行
            e.insertTuple(7, "No Name 1", 1000);
            e.insertTuple(8, "No Name 2", 1010);
            e.setName(7, "New Name 1");
            System.out.println(" getCount() = " + e.getCount() );
            System.out.println(" getAllName() = " + e.getAllName() );
            System.out.println(" getAllType() = " + e.getAllType() );
            System.out.println(" getAllName() = " + e.getAllName() );
            System.out.println(" getAllPrice() = " + e.getAllPrice() );
            System.out.println(" getAllTuple() = " + e.getAllTuple() );
            System.out.println(" getAllCommodity() = " + e.getAllCommodity() );
            System.out.println(" getCountByPrice() = " + e.getCountByPrice(100) );           
            // 問い合わせ結果を CommodityDsoに格納するもの
            CommodityDso c = e.selectNameByType(1);
            System.out.println(" selectNameByType(1) = " + c + ", type = " + c.getType() + ", name = " + c.getName() + ", price = " + c.getPrice());
      }
}
----------------------ここまで----------------------
実行
-  実行したいクラスを選び,右クリック
プロジェクト・エクスプローラで,パッケージ名の下にクラスファイル一覧が出ているので,実行したいクラスの「クラス名.java」 (つまり,HelloWorld.java) を右クリック. 
-  「実行」 → 「Javaアプリケーション (Java Application)」と操作
もしくはAlt+Shift+Xを押し,J を押すという操作でもよい. 
-  実行結果は次のようになる.
2008/10/01 16:11:21 org.springframework.jdbc.datasource.DriverManagerDataSource setDriverClassName 情報: Loaded JDBC driver: org.postgresql.Driver getCount() = 6 getAllType() = [{type=1}, {type=2}, {type=3}, {type=4}, {type=5}, {type=6}] getAllName() = [{name=apple}, {name=orange}, {name=strawberry}, {name=watermelon}, {name=melon}, {name=banana}] getAllPrice() = [{type=1}, {type=2}, {type=3}, {type=4}, {type=5}, {type=6}] getAllTuple() = [{type=1, name=apple, price=50}, {type=2, name=orange, price=20}, {type=3, name=strawberry, price=100}, {type=4, name=watermelon, price=150}, {type=5, name=melon, price=200}, {type=6, name=banana, price=100}] getAllCommodity() = [hoge.hoge.com.CommodityDso@e48e1b, hoge.hoge.com.CommodityDso@12dacd1, hoge.hoge.com.CommodityDso@1ad086a, hoge.hoge.com.CommodityDso@10385c1, hoge.hoge.com.CommodityDso@42719c, hoge.hoge.com.CommodityDso@30c221] getCount() = 8 getAllName() = [{name=apple}, {name=orange}, {name=strawberry}, {name=watermelon}, {name=melon}, {name=banana}, {name=No Name 2}, {name=New Name 1}] getAllType() = [{type=1}, {type=2}, {type=3}, {type=4}, {type=5}, {type=6}, {type=8}, {type=7}] getAllName() = [{name=apple}, {name=orange}, {name=strawberry}, {name=watermelon}, {name=melon}, {name=banana}, {name=No Name 2}, {name=New Name 1}] getAllPrice() = [{type=1}, {type=2}, {type=3}, {type=4}, {type=5}, {type=6}, {type=8}, {type=7}] getAllTuple() = [{type=1, name=apple, price=50}, {type=2, name=orange, price=20}, {type=3, name=strawberry, price=100}, {type=4, name=watermelon, price=150}, {type=5, name=melon, price=200}, {type=6, name=banana, price=100}, {type=8, name=No Name 2, price=1010}, {type=7, name=New Name 1, price=1000}] getAllCommodity() = [hoge.hoge.com.CommodityDso@9931f5, hoge.hoge.com.CommodityDso@19ee1ac, hoge.hoge.com.CommodityDso@1f1fba0, hoge.hoge.com.CommodityDso@1befab0, hoge.hoge.com.CommodityDso@13c5982, hoge.hoge.com.CommodityDso@1186fab, hoge.hoge.com.CommodityDso@14b7453, hoge.hoge.com.CommodityDso@c21495] getCountByPrice() = 2 selectNameByType(1) = hoge.hoge.com.CommodityDso@a0dcd9, type = 1, name = apple, price = 50  
プログラムは動作するが,データベースと接続できない場合, USER, PASS の行などを確かめる.
(参考)
Eclipse で データベースの中身を確認したいときは, Eclipse のデータツール・プラットホーム を使って,簡単にできる.
![[kaneko lab.]](https://www.kkaneko.jp/info/logo_png.png)