目次 | 前の項目 | 次の項目 JDBCTM ガイド: 入門


2 目標と考え方

ここでは、API 設計上の主な目標と考え方の概要を説明します。

2.1     SQL レベルの API

JDBC は、Java の「呼び出しレベルの」SQL インタフェースを目指しています。つまり主な目的は、raw SQL 文を実行し、その結果を取り込むことです。さらに高レベルの API が定義され、この基本レベル API の上に実装されることを期待します。高レベルの API の例には、Java クラスへのテーブルの直接透過マッピングや、より一般的なクエリーのセマンティックツリー表現、Java の埋め込み SQL 構文などがあります。

多くのアプリケーション開発ツールで、この API を使用したコードが生成されるようになることを期待します。また、現在 Java で利用できる呼び出しレベルの SQL インタフェースは他にないので、プログラマにとっても有用な API となることを目指しています。

2.2     SQL の互換性

一般にデータベースシステムは、幅広い SQL 構文とセマンティクスをサポートしています。また個々のデータベースシステム間では、外部結合やストアドプロシージャのような高度な機能については互換性がありません。将来は、より多くの機能が SQL の「真の」標準に含まれるようになることを望みますが、当面、JDBC は次の立場をとります。

2.3     通常のデータベースインタフェースの上に実装可能であること

JDBC SQL API は、通常の SQL レベルの API、特に ODBC 上に、確実に実装できる必要があります。この要件は、仕様のいくつかの部分、特に OUT パラメータと大きなデータの取り扱いに影響しました。

2.4     Java システム全体の一貫性を維持する Java インタフェースの提供

Java に対しては非常に積極的で肯定的な反応がありました。その理由は、Java 言語と Java 標準ランタイムが単純で一貫性があり、強力であるとの共通の認識があるためだと思われます。

既存の Java のコアクラスのスタイルと長所をできる限り尊重した Java データベースを提供するよう努力します。

2.5     単純に

少なくとも初期段階では、この基本 API はできる限り単純なものにしたいと考えています。一般に、ある特定のタスクの実行用に単純な機構を 1 つだけ提供し、機構が重複することを避けています。将来、重要な機能が欠けていることがわかったときには、API を拡張する予定です。

2.6     可能な場合はいつでも強力で静的な型チェックを使用

JDBC API では、静的に表現された型情報をできる限り多く持つ、強力な型を使用したいと考えています。これにより、コンパイル時にさらなるエラーチェックが可能になります。

SQL では本質的に動的に型付けが行われるので、実行時に型のミスマッチエラーが発生することがあります。たとえば、SELECT からの戻り値として整数を期待してプログラムが記述されているのに、データベースから文字列 foo が返されるような場合です。しかし、プログラマが期待する型をコンパイル時に表現できるべきだと考えるので、この API ではできる限り静的に型チェックを行います。また必要に応じて、動的に型付けされるインタフェースもサポートします (詳細については、第 14 章を参照)。

2.7     よくあるケースは単純に

よくあるケースはなるべく単純にし、あまり頻繁ではないケースも取り扱えるようにします。

よくあるケースとは、単純な SQL 文 (SELECT、INSERT、UPDATE、DELETE など) をパラメータなしで実行し、次に (SELECT 文の場合) 単純な型の結果行を処理するような場合です。IN パラメータを持つ SQL 文もよくあるケースです。

それほど頻繁ではないが重要なケースに、INOUT パラメータか OUT パラメータを使って SQL 文を呼び出す場合があります。また、数メガバイトのオブジェクトの読み書きを行う SQL 文もサポートする必要があります。さらに、あまり頻繁ではないケースとして、複数の結果セットが SQL 文から返されるケースもサポートする必要があります。

メタデータアクセス (結果型セットの検索やデータベース内のプロシージャの列挙など) は比較的まれで、高度なプログラマやビルダツールにより使用されると考えられます。そのため、メタデータ関数については、動的に型付けされたデータアクセスとともに、仕様の最後で説明します。標準的なプログラマはこれらの説明を読み飛ばしてもかまいません。

2.8     複数の機能は複数のメソッドで表現

インタフェース設計の 1 つのスタイルに、「プロシージャの数を少なくし、プロシージャへの引数として多くの制御フラグを提供して、さまざまな動作のために使用できるようにする」というものがあります。

一般に、Java のコアクラスの考え方は、異なる機能を表現するには異なるメソッドを使用するというものです。その結果メソッドの数は多くなりがちですが、個々のメソッドは理解しやすくなります。この方法には、プログラマが基本的なインタフェースの使用方法を学ぶときに、複雑な動作に関係する引数を指定する必要がないので、混乱を避けられるという長所があります。

JDBC インタフェースにもこの方法の採用を試みました。全般に、フラグ引数付きの多目的メソッドよりも、複数のメソッドを使用するようにしました。



目次 | 前の項目 | 次の項目
jdbc@wombat.eng.sun.com または jdbc-odbc@wombat.eng.sun.com
Copyright © 1996, 1997 Sun Microsystems, Inc. All rights reserved.