著者: JDBCドライバの作者である、Peter T. Mount (<peter@retep.org.uk>)によって記述されました。
JDBCはJava1.1以降のコアAPIです。SQLに準拠したデータベースへのインタフェースの標準セットを提供します。
Postgresはタイプ4のJDBCドライバを提供します。タイプ4とは、ドライバがPure Javaで記述され、データベース自身のネットワークプロトコルで通信を行うことを意味します。このため、ドライバはプラットホームに依存しません。一度コンパイルを行えば、そのドライバはどのプラットホームでも使用することができます。
この章は、JDBCプログラミングの完全なガイドを意図したものではありませんが、これから始めようという場合に役にたちます。より詳細については、標準のJDBC APIの資料を参照してください。また、ソースに付随している例も見てください。例にあるbasicはここで使用されています。(訳注: example/basic.javaのことです。)
ドライバのコンパイルされたバージョンは、PostgreSQLJDBC Webサイトから入手できます。ここでは、手作業でドライバをビルドする方法を解説します。
PostgreSQLのバージョン7.1から、JDBCドライバはAnt(Javaベースのパッケージをビルドするための特別なツール)を使ってビルドされます。Ant WebサイトからAntをダウンロードして、最初にインストールする必要があります。コンパイル済みAntディストリビューションは、普通は構成のためにカレントユーザのホームディレクトリから.antrcファイルを読む設定です。例えば、異なるJDKを使う場合に有効かもしれません:
JAVA_HOME=/usr/local/sun-jdk1.3 JAVACMD=$JAVA_HOME/bin/java
ドライバをビルドするには、--with-javaオプションをconfigureコマンドに追加します。例えば:
$ ./configure --prefix=xxx --with-java ...gmakeおよびgmake installコマンドを実行すると、PostgreSQLパッケージと共にドライバがビルドされてインストールされます。ドライバのみをビルドしたいのならば、src/interfaces/jdbcディレクトリに移動して、そこでmakeコマンドを実行します。構成とビルド方法の詳細については、PostgreSQLインストール方法を参照してください。
Note: javacを直接実行してビルドしないでください。ドライバは性能向上のために動的読み込み技術をいくつか使用していますが、javacでは処理できません。いくつかの構成情報がメイクファイルによって渡されるので、antも直接実行しないでください。これらのパラメータを与えられることなくantを直接実行すると、壊れたドライバになってしまいます。
ドライバを使うためには、postgresql.jarがクラスパスに含まれる必要があります。そのためには、CLASSPATH環境変数が指す場所に置くか、javaコマンドのオプションで指定します。デフォルトでは、/usr/local/pgsql/share/javaディレクトリにインストールされます。configureを実行したとき--prefixオプションを使ったならば、違うディレクトリにあるかもしれません。
例えば、天文学に関するオブジェクトを含む巨大なデータベースにアクセスするために、JDBCドライバを使うアプリケーションがあるとします。このアプリケーションとJDBCドライバを/usr/local/libディレクトリにインストールしました。また、Java JDKは/usr/local/jdk1.1.6ディレクトリにインストールされています。このアプリケーションを実行するには、次のようにします:
export CLASSPATH=/usr/local/lib/finder.jar:/usr/local/pgsql/share/java/postgresql.jar:. java uk.org.retep.finder.Main
アプリケーションの中からドライバを読み込むことについては、Section 8.2に示します。
JavaはTCP/IP接続しか使用しませんので、PostgresサーバはTCP/IP接続を受け入れるための構成が必要です。例えば、postmasterの起動時の-iオプションがあります。
また、pg_hba.confファイルによるクライアント認証の設定が必要かもしれません。詳細はAdministrator's Guideを参照してください。JDBCドライバは、ident、password、cryptの認証方法をサポートします。