目次 | 前の項目 | 次の項目
| JDBCTM ガイド: 入門 |
付録 D: 変更履歴
以下は、0.50 から 0.60 への移行で行われた変更です。
- トランザクションの記述を修正し、使われていない beginTransaction メソッドへの参照を削除 (9.3 項)
- メソッド名に関する小さな綴りの間違い、大文字の使用の間違い、および不整合を修正 (特に DatabaseMetaData インタフェースについて)
- チェーン管理用のメソッドを SQLWarning に追加
- 利用できないカタログ情報を取得しようとした場合、メタデータメソッドから NULL の ResultSet を返すのではなく、例外をスローするように指定 (DatabaseMetaData.java の先頭のコメントを参照)
- 履歴に関する注を本文から付録 A に移動
- Statement.executeUpdate メソッドを追加し、Statement.execute メソッドを変更。簡単にいえば、execute メソッドは動的なプログラミング用であるのに対し、executeQuery と executeUpdate メソッドは単純な文を実行するためのもの
- JDBC ドライバを実装する際のセキュリティ要件が明確になるように、5.3 項の記述を変更
- JDBC のログストリームへのログの書き込み用に DriverManager.println を追加
- DriverManager.loadDriver を削除し、ドライバの読み込みに Class.forName の使用を促す記述を 6.6 項に追加。これは、Java クラスローダの実装に関する問題を反映した変更である
- 第 11 章の記述を整理、ただしインタフェースの変更はなし
- ParameterMetadata を削除。内容は DatabaseMetaData.getProcedureColumns から返される情報のサブセットであり、後者のインタフェースの方がより完全である
- Environment の名前を DriverManager に変更。この名前の方が、このクラスの最終的な機能をよく反映している
- JDBC が CHAR(n) フィールドにスペースをパディングすることについての記述を追加 (8.3 項)
- データの切り捨て規則について記述した 7.4 項を追加
- ResultSet.getRowNumber メソッドを削除。この処理はアプリケーションで簡単に行える
- ODBC と同じになるように、トランザクション遮断レベルの定数値を変更
- ResultSet.getRowCount を削除。このメソッドを実装する負担があまりにも大きいという複数の指摘があった
- ResultSet.getColumnCount を削除。すでに ResultSetMetaData.getColumnCount メソッドがあり、プログラムでは列の数と併せて列に関するほかのメタデータも必要とすることが多いため、このメソッドは不要である
- 要求が多いため、列の名前を指定して値を取得する ResultSet のメソッドを追加
- 列の名前を受け取るメソッドのデフォルトの実装を提供できるよう、ResultSet をインタフェースから抽象クラスに変更 (注: この決定の意味については疑問があるため、引き続きレビューを実施)
- Statement.setCursorName メソッドを追加
- API の記述の多くに、Java「doc コメント」スタイルのコメントを追加
以下は、0.60 から 0.70 への移行で行われた変更です。
- Statement 警告チェーンのほかに、独立した ResultSet 警告チェーンとアクセスメソッドの追加
- ResultSet の getAscciStream メソッドと getUnicodeStream メソッドの動作を明示
- PreparedStatement の setAscciStream メソッドと setUnicodeStream メソッドの動作を明示
- ストアドプロシージャの OUT パラメータでは LONGVARCHAR と LONGVARBINARY がサポートされていないことの明確な記述を追加 (7.3.3 項と 14.2 項を参照)
- CallableStatement インタフェースから getLongVarChar メソッドと getLongVarBinary メソッドを削除
- ResultSet を仮想クラスから元のインタフェースに変更。付録 C で、参照用として、ResultSet.findColumn の実装サンプルを提供
- ResultSet.isNull を ResultSet.wasNull に変更。isNull のスタイルの方が望ましいが、初期の JDBC の実装において、一部のデータベースでは、ある種のデータ型に対して isNull を確実に実装することが不可能であることがわかった。このようなデータベースでは、最初に読み込みを行い、そのあとで読み込みから返った値が NULL かどうかを検査する必要がある
- 同様に、CallableStatement.isNull を CallableStatement.wasNull に変更
- ドライバが完全に JDBC COMPLIANT (TM) かどうかを返す Driver.jdbcCompliant を追加
- jdbc:odbc サブプロトコルの URL 構文の仕様を追加 (6.3.6 項)
- LIKE エスケープ文字を追加 (11.5)
- Driver.acceptURL と DriverManager.getDriver を追加
- 自動クローズは PreparedStatement、CallableStatement、および ResultSet にだけ適用されて、単純な Statement には影響しないことを記述 (9.3 項)
- 汎用的な GUI アプリケーションで使うとドライバが要求する接続プロパティを調査できる、Driver.getPropertyInfo メソッドと DriverPropertyInfo クラスを追加
- SQLWarning 型の NullData を削除。NULL データが読み込まれたかどうかの検査は、wasNull メソッドを使って可能
- 「next」を呼び出すごとに ResultSet の警告がクリアされることを明示
- 文が実行または再実行されるたびに Statement の警告がクリアされることを明示
- getXXX または setXXX の形式のメソッドをすべて、SQL 型ではなく返される Java 型に基づく名前の同等のメソッドに置き換え。つまり、getTinyInt メソッドは getByte メソッドに変更。第 7 章および付録 A.10 を参照。メソッド名に SQL のデータ型を使うと混乱が発生し、Java のデータ型名の使用が望ましいというレビューからの情報に対して行われた非常に重要な変更である
- getObject メソッドと setObject メソッドを追加、およびそれに関する説明テキストの追加 (14.2 項)
- データの変換が行われる場合と行われない場合を明記した項を追加 (7.1.1 項、7.2.1 項、および 7.3.1 項)
- Java から SQL へのデータ型のマッピングを明記した表を追加 (表 3 および表 5)
以下は、0.70 から 0.95 への移行で行われた変更です。
- SQL の FLOAT 型から Java の double 型または Double 型へのデフォルトのマッピングを変更 (表 1、表 2、表 4)
- Java の float 型および Float 型から SQL の REAL 型へのデフォルトのマッピングを変更 (表 3、表 5)
- ネットワークプロトコルのセキュリティは JDBC の問題ではないことを明示 (5 項)
- SQL の Escape 句の名前を変更し、拡張に関して説明して、ANSI および Microsoft の ODBC で定義されている SQL レベルとの関係を明示
- 位置決めされた更新について明記した項を追加 (10 項)
- 旧版の「7.1 ODBC でのパラメータと結果」および ODBC とのそのほかの各種比較を削除。これらの記述は初期のレビューでは有用であったが、最終仕様ではそれほど必要ではない
- JDBC 準拠ドライバはすべて CallableStatement をサポートしなければならないが、OUT パラメータに関するメソッドをサポートする必要はないことを明示 (3.2 項、12.1 項)
- disableAutoClose を setAutoClose に変更
- Connection.getAutoClose と Connection.getAutoCommit を追加
- PreparedStatement.setObject での変換を記述した表 6 を追加
- 対象の SQL 型を引数として受け取る ResultSet.getObject メソッドと CallableStatement.getObject メソッドを削除。これより単純な getObject メソッドは存続。これらのメソッドは実装および説明が難しく、実際的な需要もないものと思われる
- ファイナライザについての助言を付録 C.2 に追加
以下は、0.95 から 1.00 への移行で行われた変更です。
- 列の名前を指定して ResultSet の列の値を取得する場合、同じ名前の列が複数あるときは、最初に一致した列の値が返されることを明示
- PreparedSattement.setXXX 系メソッドのどれかに Java の null を渡した場合は、SQL の NULL がデータベースに送られることを明示
- DatabaseMetaData.getColumns メソッドの結果に列 SQL_DATA_TYPE を追加
- トランザクション遮断レベル TRANSCTION_VERSIONING を削除
- ストアドプロシージャから ResultSet と OUT パラメータの両方が返される場合、OUT パラメータを読み込む前に ResultSet を読み込んで処理する必要があることの記述を追加 (7.3 項)
- 最大限の移植性を確保するには ResultSet の列を左から右の順番に取り出す必要があることの記述を追加 (7.1 項)
- 最初の仕様をリリースする前に書かれていた導入部の一部を書き換え
以下は、1.00 から 1.01 への移行で行われた変更です。変更はすべて記述の明確化と誤記の訂正です。仕様に対する実質的な変更は行われていません。記述の明確化のほとんどは、API マニュアルだけに関するものです。
- ResultSet の変換表から、CHAR 型に対する getBinary を削除 (単純な記述ミス)
- setXXX および setObject で使われる精度はドライバが選択した最大精度の値になることを記述
- さまざまな SQL 識別子の処理における大文字と小文字の区別方法および格納時の大文字と小文字の取り扱い方法についての記述を明確にし、JDBC ドライバの要件をそれに合わせて変更
- JDBC の java.io.stream.available() からはデータの有無にかかわらず 0 が返る場合があることの記述を追加。JDBC ドライバでは、利用可能なデータの正確なバイト数を取得できない場合がある
- Statement.getMoreResults メソッドの終了条件が正確に記述されていなかったため、これを修正
- Statement.executeUpdate メソッドは文の現在の結果セットを暗黙でクローズすることを記述
- static セクションでインスタンスを生成して登録する必要があることの記述を、Driver のコメントに追加 (記述の誤り)
- getCrossReference のパラメータを修正 (記述の誤り)
- ドライバが DatabaseMetaData メソッドをサポートしていない場合は SQLException がスローされる必要があることを記述
- executeQuery からは ResultSet の null 参照が返らないことを記述
- 結果を返す文の場合の自動コミットのセマンティクスを明示
- getTablePrivileges の ResultSet から ColumnName を削除 (記述の誤り)
- CallableStatement の ResultSet および更新カウントは出力パラメータの値を取得する前に処理する必要があることを記述
以下は、JDBC 1.10 に対する変更です。これらはすべて、仕様の明確化や追加に関する小さなものです。ただ、自動クローズの削除と java.sql.Numeric の名前の変更は小さな改訂ですが下位互換性はありません。特に、名前の変更に関しては、ドライバを更新しないと JDBC 1.1 で動作しません。
- 遮断レベルの記述を変更
- getTablePrivileges の解説を変更し、テーブルの 1 つ以上の列に特権が適用されることを記述
- コミットまたはロールバックの間保存のメタデータは正を指定し、負を指定すると部分保存が可能なように変更
- getImportedKeys、getExportedKeys、getCrossReference の ON DELETE と ON UPDATE に値 NO ACTION と SET DEFAULT を追加
- getImportedKeys、getExportedKeys、および getCrossReference に DEFERRABILITY 属性を追加
- 自動クローズの機能を削除
- java.sql.Numeric の名前を java.lang.Bignum に変更
- 最大限の移植性を維持するため、256 より小さい値を setMaxFieldSize に指定しないように記述
- 理由の初期化に合わせて、SQLState の初期化を "" から NULL に変更
- Date、Time、および Timestamp の定義を明示
- インスタンスの生成を防ぐため、DriverManager と Types に private コンストラクタを追加
- Date、Time、および Timestamp に millis コンストラクタを追加
- SQLException、SQLWarning、DriverPropertyInfo、および DataTruncation のコンストラクタのデフォルト値を明示
以下は、JDBC 1.2 に対して行われた変更です。
- java.lang.Bignum クラスを java.math.BigDecimal クラスに置き換え。Bignum 型のパラメータをすべて BigDecimal 型に変更。Bignum を含むすべての操作名を、BigDecimal を使うように変更
- ドライバのプロパティ名を修正。「sql.drivers」と記述されていたが、正しくは「jdbc.drivers」
目次 | 前の項目 | 次の項目
jdbc@wombat.eng.sun.com
または
jdbc-odbc@wombat.eng.sun.com
Copyright © 1996, 1997 Sun Microsystems, Inc. All rights reserved.