[先頭の項目] [前の項目] [次の項目] [最後の項目]

付録 A - 新しい特徴の要約

注: この章の内容の一部は、Addison Wesley 社より Java シリーズの 1 巻として出版された『JDBCTM API Tutorial and Reference, Second Edition: Universal Data Access for the JavaTM 2 Platform』(ISBN 0-201-43328-1) に基づいて作成したものです。

この付録では、JDBC API にこれまで追加されてきた新機能を要約しています。ただし、特定の機能を使用するには、その機能をサポートしているドライバを使用する必要があります。

A.1 JDBC 3.0 API の変更点の概要

JDBC 3.0 API の主な変更点の 1 つは、パッケージ java.sql だけでなくパッケージ javax.sql (JDBC オプションパッケージ) も、API に含まれるようになったことです。この概要説明は前半と後半に分かれています。前半のセクションでは、JDBC 3.0 API で両方のパッケージに追加された機能について説明します。後半のセクションでは、JDBC 2.0 オプションパッケージに追加された機能について説明します。詳細については、JDBC 3.0 API 仕様を参照してください。

A.1.1 JDBC 3.0 API に追加された機能

JDBC 3.0 API に追加された新しい資料や変更点は、次のとおりです。

A.1.2 JDBC 2.0 オプションパッケージに追加された機能

次の機能は、javax.sql パッケージに追加されましたが、今回、JDBC 3.0 API の一部となり、また、J2SE バージョン 1.4 にも追加されました。

A.2 JDBC 2.0 コア API の変更点の概要

JDBC 2.0 コア API は、JDBC 1.0 API を含み、さらに拡張機能および新しい機能を追加しています。これらの追加された機能により、汎用的なデータアクセスと向上したパフォーマンスの提供によって、データベースコンピューティングの最前線に Java プログラミング言語を位置付けます。

「下位互換性の目標」に従っているので、旧バージョンの JDBC API を使用するアプリケーションは、Java 2 プラットフォームを使って問題なく実行できます。しかし、2.0 の新しい特徴を利用するアプリケーションは、それらの特徴を実装しているドライバとともに実行しなければなりません。

JDBC 2.0 コア API の新しい特徴は、新しい機能のサポートと SQL99 データ型のサポートの 2 つに大きく分類されます。

  1. 新しい機能のサポート
  2. 高度なデータ型のサポート

A.3 新しい機能の概要

JDBC 2.0 コア API は、重要な新機能を追加しています。ここでは、それぞれの新しい機能範囲について簡単に説明し、サポートしている API をまとめます。

A.3.1 スクロール可能な結果セット

スクロール可能な結果セットは、現在のカーソル位置からの相対位置または指定の位置に、カーソルを進めたり戻したりできます。次のインタフェースには、スクロール可能な結果セットをサポートする新しいメソッドがあります。

A.3.2 バッチ更新

新しいバッチ更新機能により、更新を個別に送信せずに、データベースに複数の更新を一度に送信してバッチ実行することができます。次のインタフェースには、バッチ更新をサポートするメソッドが追加されています。 BatchUpdateException 例外は新規です。

A.3.3 プログラム的な更新

プログラム的な更新により、SQL 文ではなく JDBC API を使って更新を行うことができます。次のインタフェースには、プログラム的な更新をサポートする新しいメソッドと定数があります。

A.3.4 その他の新しい特徴

JDBC 2.0 コア API には、上記の他に、さまざまな新しい特徴があります。 この特徴を以下にまとめます。

A.4 高度なデータ型のサポート

JDBC 2.0 コア API には高度なデータ型のサポートが追加されており、高度なデータ型を単純なデータ型と同じくらい簡単に使用できます。このサポートには、本質的にはオブジェクトである新しい SQL データ型の保存、検索、更新の機能も含まれるので、オブジェクトデータベースとリレーショナルデータベースの明確な区別をなくすことができます。以下の 4 つの節 ([A.4.1 SQL99 データ型とは何か」「A.4.2 SQL99 データ型のサポートの概要」「A.4.3 SQL99 型のマッピング」「A.4.4 SQL ロケータ」) で、JDBC 2.0 コア API の高度なデータ型のサポートについて説明します。

SQL で定義されているオブジェクトをデータベーステーブル内の値として保存できるだけではなく、Java アプリケーションを作成するプログラマは、Java プログラミング言語で定義されているオブジェクトをデータベーステーブル内の値として保存することができます。「A.4.5 Java オブジェクト保存のサポート」で、この機能について説明します。

ドライバは、そのドライバの DBMS がサポートしていない機能を実装するようには、要求されていません。 そのため、すべてのドライバが、ここで説明している機能を実装する必要はありません。getTypeInfogetColumnsgetUDTs などの DatabaseMetaData メソッドを呼び出して、ドライバがサポートしているデータ型の情報を取得することができます。

A.4.1 SQL99 データ型とは何か

ここでは新しい SQL99 データ型について説明します。Java プログラミング言語のデータ型へのこれらのデータ型のマッピングについては、「A.4.3 SQL99 型のマッピング」で説明します。

SQL99 データ型は、次のように分類されます。

A.4.2 SQL99 データ型のサポートの概要

JDBC 2.0 コア API は、次の新しいインタフェース、メソッド、フィールドによって、新しい SQL99 データ型をサポートします。

A.4.3 SQL99 型のマッピング

JDBC API では、SQL99 データ型の正確な複製を試みるのではなく、それらのデータ型を Java プログラミング言語の型にマッピングすることにより、それらのデータ型の機能性を維持し、使用の便宜をはかることを目標とします。たとえば、SQL99 には「ロケータ型」と呼ばれるデータ型があり、データベースサーバに保存されているデータを指すためにクライアント上で使用されます。ロケータではクライアントマシン上にデータを実体化しなくてもデータを操作できるので、大きなデータを扱う場合に役立ちます。SQL99 には、ARRAYBLOBCLOB 型と構造化型のためのロケータが含まれています。JDBC API には、直接的にはこれらのデータ型のためのロケータは含まれていません (構造化型のためのロケータはまったくありません) が、ドライバと DBMS が状況に合わせて適切なロケータを使用するように実装されたインタフェースがあります。その結果、JDBC API を使って SQL の ARRAYBLOBCLOB 型の値にアクセスする場合、開発者はロケータについて考える必要はありません。

SQL99 型から Java プログラミング言語のインタフェースへのマッピングは、次のとおりです。

個別型は単一の組み込み型を基にしているため、単純にその組み込み型への標準的なマッピングにマッピングされ、インタフェースにはマッピングされません。たとえば、次の SQL 文は新しいデータ型 MONEY を作成します。

CREATE TYPE MONEY AS NUMERIC(10, 2)

この新しい UDT は java.math.BigDecimal にマッピングされるデータ型 NUMERIC を基にしています。そのため、データ型 MONEYjava.math.BigDecimal にマッピングされます。したがって、MONEY 型の値は getBigDecimal メソッドで取得され、setBigDecimal メソッドで保存され、updateBigDecimal メソッドで更新されます。

A.4.4 SQL ロケータ

SQL LOCATOR は、データベースサーバ上のデータへの論理ポインタです。一般に、画像やオーディオなど、クライアント上に生成するには大きすぎるデータを参照します。ロケータはクライアント環境にのみ存在し、その存在は一時的です。標準実装では、インタフェース BlobClobArray のインスタンスに対して、ロケータを内部的に使用します。つまり、BlobClobArray オブジェクトにはデータそのものが含まれているのではなく、サーバ上のデータを指すロケータが含まれています。BlobClobArray インスタンスを操作するということは、実際には、それらが表すデータベースオブジェクトを操作していることになります。クライアントにデータを持ち込まずに大きなデータベースオブジェクトを操作するこの機能は、性能に大きく貢献します。

ただし、SQL LOCATOR(構造化型) の使用を、JDBC API が必要としているわけではありません。標準的な実装では、Struct オブジェクトには、それがマッピングされる構造化型のデータが含まれていて、BlobClobArray オブジェクトのような内部的なロケータとしては実装されていません。

A.4.5 Java オブジェクト保存のサポート

JDBC API では、Java プログラミング言語に定義されているオブジェクトの永続的な保存を、getObjectsetObject メソッドを通じて、常にサポートしてきました。もちろん、Java オブジェクトの永続的な保存は、DBMS がそれをサポートしていない限り実際には起り得ません。このためサポートには制限がありますが、Java オブジェクトをデータ型として認識する新世代の DBMS が出現しつつあります。Java リレーショナル DBMS と呼ばれるこれらの DBMS では、Java クラスのインスタンスをデータベーステーブル内の列の値として保存できます。



[先頭の項目] [前の項目] [次の項目] [最後の項目]

Copyright © 2001, Sun Microsystems, Inc. All rights reserved.