(1)JDBCとは何か
JDBC は Javasoft 社が開発している SQL 文を実行するための Java API で、
あらゆるJava 実行環境で必須とされる Core API に分類されています。
JDBC API は
Java プログラムからDBサーバへ接続する
SQL 文を組立て、DBサーバで実行させる
DBサーバが処理した結果を取り出す
DBの情報、処理結果に関する情報などを取り出す
ためのクラス、メソッド群を提供します。これにより、Java からDBの操作が可能になります。
感覚的に言うと「Visual Basic + ODBC」の組合せでプログラマを作るのに似ています。
ただし、データコントロールに相当するものは、JDBC API には用意されていません。
JDBC APIは「ドライバマネージャ」というものを持っています。
これは、異種DB接続を可能にするため、複数ドライバ接続をサポートするものです。
Java プログラマから見ると JDBC API はインターフェースの定義でしかありません。
そのインターフェース経由で呼び出され、実行されるもの(= JDBC ドライバ)がどのようなものかについては規定していません。
つまり、実装方法は自由なわけです。実際に、Applet の一部として Download できるようにするため、
全て Java で書かれたものにすることもできるし、
すでに存在するDBアクセスライブラリへの橋渡しをするため native method を使って実装しているものもあります。
一般的に JDBC は、Java Database Connectivity の略と言われていますが、
JavaSoft の資料には「JDBC は トレードマーク(TM)であって、何かの略語ではない」と書かれています。
実際 JavaSoft のページには「JDBC(tm)」と表記されている部分もあります。
(2)JDBCの役割
■Javaプログラムの開発者に対し、
DBMS(Database Management System) に対し SQL を発行する
結果を受け取り処理を行う
ための標準的なインターフェース(API)を提供する。
DBMS (ex. Oracle, Informix, Sybase, SQLServer)による差異は JDBC が吸収してくれるため、
DBMS の種別毎にプログラムを開発する必要がなくなる。
開発者にとっても、一度 JDBC をマスターすれば、ターゲット DBMS が代わってもそれまでに習得した知識は無駄にならず、
使いまわしが効くというメリットがある。
さらに、Java 言語で書かれたアプリケーションは、プラットフォームに依存しないから、
一度Java と JDBCでプログラムを書けば、(Java実行環境を備えていれば)どこででも実行できる...。
はずなんですが、現実にはいろいろな問題があって必ずしもこうなるとは限りません。
■より高いレベルのツールを構築するためのインターフェースを提供する
JDBC の提供するクラス、メソッドなどは、プリミティブというか低レベルインターフェースというか、
プログラマが直接使うにはちょっと...。という感じがします。
以前 Gupta社のSQLWndows(現Centura)でOracleをアクセスするシステムを開発したことがありますが、
それに比べるとちょっと面倒です。SQLWindows なら考えなくていいことも、JDBC ではコーディングしなければならないからです。
感覚的に言えば Visual Basic で ODBC 経由でDBへアクセスするプログラムの作成と似たような感じです。
JDBC で実際のアプリケーションを開発するには、JDBC をベースにしたクラス群とか、
JDBC をサポートしたツールが必要になるでしょう。例えば、Symantec の Visual Cafe Pro のような製品です。
(3)JDBC の構造
基本的には、以下のような構造になります。
Java Application/Applet
JDBC Driver manager
JDBC Driver
DB Driver
これについて NJK 社の Object Technology Group がとてもわかりやすい資料を公開していますのでそちらを紹介します。
第1回「Javaによるイントラネット開発」セミナー(平成 9年 1月21日)
プレゼンテーション資料
http://www.njk.co.jp/otg/Ijaho/presen/index.html
上記の構造の中で JDBC Driver manager は JavaSoft から入手できます(JDBC の Dwonload 用ファイルを解凍してインストールする)。
JDBC Driver は現在、いろいろなベンダからリリースされています。その中から接続するDBの種類、接続形態により選択します。
DB Driver は接続するDBの開発元から入手するのが一般的ですが、独立系のベンダもあります。
(4)JDBCドライバタイプ
JDBCドライバは以下のように、4つのタイプに分類されます。
ODBC Bridge Driver(TYPE 1)
Native-API Partly-Java Driver(TYPE 2)
Net Protocol All-Java Driver(TYPE 3)
Native Protocol All-Java Driver(TYPE 4)
それぞれの特徴、構造などについては NJK 社の Object Technology Group が
とてもわかりやすい資料を公開していますのでそちらを紹介します。
JDBC-Driver解説
http://www.njk.co.jp/otg/Ijaho/presen/jdbctype.html
ポイントは、「Applet から JDBC を使う場合には、TYPE 3 または TYPE 4 の JDBC ドライバが必要」
だということです(HORB と組み合わせれば TYPE 1 でも可能ですが)。このあたりのことは、別項にまとめます。
また、JavaSoft 社のページには、JDBCドライバとそのタイプについてまとめた一覧表があります。
JDBC(tm) Drivers
http://splash.javasoft.com/jdbc/jdbc.drivers.html
(5)JDBC のバージョン
現在、JavaSoft 社が提供している JDBC には、以下の3種類ものがあります。
JDBC JDK1.1版
JDK 1.1 には JDBC (及び JDBC ODBC-Bridge Driver)が標準で含まれている。
java.math.BigDecimalの精度を除けば、下記のRelease 1.22 と同じ物である。
JDBC Release 1.22
JDK1.0.2のユーザ用のJDBC。これをインストールすることにより、JDK1.0.2 で JDBC が使用可能になる。
この Release 1.22 は java.math.BigDecimalの精度が18桁に制限されているということを除いて、
JDK1.1に含まれているものと同じである。
JDBC Release 1.10
JDK 1.1 beta 2に含まれているものに相当する。JDK1.1版、Release 1.22 は、それ以前のjava.lang.Bignum が
java.math.BigDecimal と java.math.BigIntegerクラスの組合わせで置き換えられている。
このRelease 1.10 は BigDecimal を使うよう修正されていないドライバを使う場合のもの。
今後徐々にJDK1.1へ移行することを考えると、Release 1.22/1.10 はそれまでの「つなぎ」と言えるでしょう。
注意点としては、古い JDBC ドライバは最新の JDBC と組み合わせて使うことができない場合があることです。
JavaSoft社のページ(http://splash.javasoft.com/jdbc/index.html)には、
JDBC 1.1用に書かれたドライバはJDBC 1.22とはうまく動かない、と書かれています。
JDBC Release 1.22/1.10 はJavaSoft社のページからDownloadできます。
(6)ドキュメント・情報源(英語編)
まずは開発元 JavaSoft 社の JDBCのページ。
The JDBC(tm) database access API
http://splash.javasoft.com/jdbc/index.html
ここから JDBC, JDBC-ODBC Bridge Driver 本体、およびSpecification, API DocumentationなどがDownloadできます。
それと同じくJavaSoftの
JDBC(tm) Drivers
http://splash.javasoft.com/jdbc/jdbc.drivers.html
には、JDBCドライバとそのドライバタイプをまとめた一覧表があります(どのくらいカバーされているかわかりませんが)。
JDBC(tm) vendors
http://splash.javasoft.com/jdbc/jdbc.vendors.html
JDBC を支持しているベンダのリストもあります。
JDBC の FAQ も一応あります。
JavaSoft FAQ
http://splash.javasoft.com/jdbc/jdbc-frequent.html
それほど情報量は多くないです。
JDBC Frequently Asked Questions
http://www.yoyoweb.com/Javanese/JDBC/FAQ.html
JavaSoft FAQより内容が充実していると思います。
JDBC: Java Database Connection(Bill Bilow's Java Table!)
http://www.geocities.com/SiliconValley/Park/9841/
JDBC を使ったコードの書き方の解説があります。
Gamelan にも Databse 関連のApplet/Applicationなどが登録されています。
Gamelan Programming in Java Databases
http://www-a.gamelan.com/pages/Gamelan.programming.db.html
書籍では以下のようなものがあります。
Java Database Programming with JDBC
http://www.coriolis.com/Site/MSIE/Books/Ind/jdpjdbc.htm
JDBC Developer's Resource
http://www.prenhall.com/allbooks/ptr_0138423520.html
The Comprehensive Guide to the JDBC SQL API
http://www.vmedia.com/home.html
しかし、本命は JavaSoft Press が Addison-Wesley から出す予定の
JDBC Database Access with Java(TM) - A Tutorial and Annotated Reference
ではないかと思っています。
1997春出版予定といわれていましたが、Computer Literacy Bookshop(http://www.clbooks.com/)のDBで調べてみると
Not Yet Published... Estimated date: Jul 1997
だそうです。
幸い「この本の内容を抜粋して作った」というドキュメントが JavaSoft から公開されています。
それが「JDBC(TM) Guide : Getting Started」です。私もよく参照する資料です。これは以下のファイルに格納されています。
JDK Documentation(ftp://ftp.javasoft.com/docs/jdk1.1/jdk1.1.1-docs.html.zip)
これを解凍すると作られる jdk1.1.1/docs/guide/jdbc/getstart/introTOC.doc.html が目次です。
ftp://ftp.javasoft.com/docs/jdk1.1/jdbc.pdf
「JDBC(TM) Guide : Getting Started」だけが納められたファイル。
中身を読むには Adobe Acrobat Reader が必要です(そのかわりきれいに印刷できる)。
[97.9.30追加]
JDBC Database Access with Java がやっと出版されました。
[98.9.6追加]
日本語訳が出版されました。
書名:JDBCによるデータベースアクセス
発行:(株)アスキー
価格:\5,800(税別)
ISBN:4-7561-1861-5
1.(6)ドキュメント・情報源(日本語編)
ついに JDBC の日本語本がでました。
日本サン・マイクロシステムズ(株)編/(株)サイエンス社発行
Javaプログラミング JDBC Java Database Connectivity
(ISBN:4-7819-0844-6 ) 読書感想文はこちら。
Web では以下が参考になります。
日本サン・マイクロシステムズのJava関連プレゼンテーション資料
JDBC: A Java SQL API
http://www.sun.co.jp/java.jp/presentation/jdbc/index.html
JDBC の概要がわかります。
NJK 社の Object Technology Group が公開している資料
Javaによるイントラネット開発セミナー
プレゼンテーション資料
http://www.njk.co.jp/otg/Ijaho/presen/index.html
JDBC-Driver解説
http://www.njk.co.jp/otg/Ijaho/presen/jdbctype.html
図が多くて理解しやすいです。
INTERSOLV社のサイト
JBDCソリューション
JDBCを使用したデータベースアクセス
http://www.intersolv.co.jp/
Digital Cat'sのサイト
JDBC
A Persistant Storage for Java Objects
http://www.javacats.com/JP/articles/Qusay/JDBC.html
なお、拙稿ではありますが、単発もので
技術評論社 Software Design 97/2号
「Javaで作るWWWとデータベースの連携〜JDBCを使って」
というものがあります。掲載したソースなども Download できるようにしてあります。興味があるかたはどうぞ。
[98.9.6追加]
私が良く参照していた JavaSoft Press の
「JDBC(TM) Database Access with Java(TM) - A Tutorial and Annotated Reference」が遂に翻訳されました。
書名:JDBCによるデータベースアクセス
発行:(株)アスキー
価格:\5,800(税別)
ISBN:4-7561-1861-5
|