モジュール java.sql

パッケージjava.sql


パッケージjava.sql
Javaプログラミング言語を使用して、データ・ソース(通常はリレーショナル・データベース)に格納されているデータにアクセスして処理するためのAPIを提供します。 このAPIに含まれているフレームワークで、複数のドライバをインストールして複数のデータ・ソースに動的にアクセスできます。 JDBC APIは主にSQL文をデータベースに渡すことを目的としていますが、表形式のデータ・ソースからのデータの読取りおよび書込みを可能にします。 javax.sql.RowSetインタフェース・グループを介して使用可能な読み込み/書込み機能は、スプレッドシート、フラット・ファイル、またはほかの表形式のデータ・ソースのデータを使用および更新するためにカスタマイズできます。

JDBC 4.3 APIの内容

JDBC 4.3 APIには、JDBCコアAPIと呼ばれるjava.sqlパッケージとJDBCオプション・パッケージAPIと呼ばれるjavax.sqlパッケージの両方が含まれています。 この完全なJDBC APIは、Java Standard Edition (Java SE)バージョン7に含まれています。 javax.sqlパッケージは、JDBC APIの機能をクライアント側APIからサーバー側APIに拡張したもので、Java Enterprise Edition (Java EE)テクノロジの重要な部分です。

バージョン

JDBC 4.3 APIには以前のバージョンのJDBC APIがすべて組み込まれています。
  • The JDBC 4.2 API
  • JDBC 4.1 API
  • JDBC 4.0 API
  • JDBC 3.0 API
  • JDBC 2.1コアAPI
  • JDBC 2.0オプション・パッケージAPI
    (JDBC 2.1コアAPIとJDBC 2.0オプション・パッケージAPIを合わせてJDBC 2.0 APIと呼ぶ)
  • JDBC 1.2 API
  • JDBC 1.0 API

クラス、インタフェース、メソッド、フィールド、コンストラクタ、および例外には、これらがいつJavaプラットフォームに導入されたのかを示す次のsinceタグがあります。 これらの"since"タグがJDBC APIのJavadocコメントで使用される場合、次のことを示します:

  • since 9 -- JDBC 4.3 APIに新しく追加。Java SEプラットフォーム, Version 9の一部
  • since 1.8 -- JDBC 4.2 APIに新しく追加。Java SEプラットフォーム, Version 8の一部
  • since 1.7 -- JDBC 4.1 APIに新しく追加。Java SEプラットフォーム, Version 7の一部
  • since 1.6 -- JDBC 4.0 APIに新しく追加。Java SEプラットフォーム, Version 6の一部
  • since 1.4 -- JDBC 3.0 APIに新しく追加。J2SEプラットフォーム, Version 1.4の一部
  • since 1.2 -- JDBC 2.0 APIに新しく追加。J2SEプラットフォーム, Version 1.2の一部
  • 1.1以降、"since"タグがない -- 元のJDBC 1.0 APIおよびJDKバージョン1.1の一部

ノート: 新機能の多くはオプションです。したがって、ドライバおよびドライバがサポートする機能にはいくつかのバリエーションがあります。 機能を使用する前に、その機能がサポートされているかどうかをドライバのドキュメントで必ず確認してください。

注意: SQLPermissionクラスは、Java 2 SDK, Standard Editionバージョン1.3リリースで追加されました。 このクラスを使用すると、表名、列データなどの情報を格納するDriverManagerに関連したログ・ストリームへの無権限でのアクセスを防止できます。

java.sqlパッケージに含まれるもの

java.sqlパッケージは、次の用途のAPIを含んでいます。
  • DriverManager機能を介したデータベースとの接続
    • DriverManagerクラス -- ドライバとの接続
    • SQLPermissionクラス -- アプレットなどのセキュリティ・マネージャ内で実行されるコードがDriverManagerを介してログ・ストリームを設定しようとするときにアクセス権を許可する
    • Driverインタフェース -- JDBCテクノロジに基づくドライバ(JDBCドライバ)の登録および接続をAPIに提供する。通常はDriverManagerクラスだけが使用する
    • DriverPropertyInfoクラス -- JDBCドライバのプロパティを提供する。一般ユーザーは使用しない
  • データベースへのSQL文の送信
    • Statement -- 基本SQL文を送信する
    • PreparedStatement -- 準備済み文または基本SQL文を送信する(Statementから派生)
    • CallableStatement -- データベース・ストアド・プロシージャを呼び出す(PreparedStatementから派生)
    • Connectionインタフェース -- 文を作成し、接続とそのプロパティを管理するメソッドを提供する
    • Savepoint -- トランザクションでセーブポイントを提供する
  • クエリー結果の取得と更新
    • ResultSetインタフェース
  • SQL型をJavaプログラミング言語のクラスおよびインタフェースへ標準マッピング
    • Arrayインタフェース -- SQL ARRAYをマッピングする
    • Blobインタフェース -- SQL BLOBをマッピングする
    • Clobインタフェース -- SQL CLOBをマッピングする
    • Dateクラス -- SQL DATEをマッピングする
    • NClobインタフェース -- SQL NCLOBをマッピングする
    • Refインタフェース -- SQL REFをマッピングする
    • RowIdインタフェース -- SQL ROWIDをマッピングする
    • Structインタフェース -- SQL STRUCTをマッピングする
    • SQLXMLインタフェース -- SQL XMLをマッピングする
    • Timeクラス -- SQL TIMEをマッピングする
    • Timestampクラス -- SQL TIMESTAMPをマッピングする
    • Typesクラス -- SQL型の定数を提供する
  • SQLユーザー定義型(UDT)をJavaプログラミング言語のクラスへカスタム・マッピング
    • SQLDataインタフェース -- このクラスのインスタンスへのUDTのマッピングを指定する
    • SQLInputインタフェース -- ストリームからUDT属性を読み込むメソッドを提供する
    • SQLOutputインタフェース -- ストリームへUDT属性を書き込むメソッドを提供する
  • メタデータ
    • DatabaseMetaDataインタフェース -- データベースに関する情報を提供する
    • ResultSetMetaDataインタフェース -- ResultSetオブジェクトの列に関する情報を提供する
    • ParameterMetaDataインタフェース -- PreparedStatementコマンドのパラメータに関する情報を提供する
  • 例外
    • SQLException -- データ・アクセスの障害が発生したときにほとんどのメソッドによってスローされ、その他の理由により一部のメソッドによってスローされる
    • SQLWarning -- 警告を示すためにスローされる
    • DataTruncation -- データが切り詰められた可能性があることを示すためにスローされる
    • BatchUpdateException -- バッチ更新のコマンドがすべては正常に実行されなかったことを示すためにスローされる

JDBC 4.3 APIで導入されたjava.sqljavax.sqlの機能

  • Shardingサポートが追加されました
  • リクエスト(独立した作業単位)が開始または終了していることを示すヒントをドライバに提供できるように拡張されたConnection
  • Shardingがサポートされているかどうかを判断するためのDatabaseMetaDataの拡張
  • 現在ロードされ使用可能なJDBCドライバのストリームを返すdriversメソッドをDriverManagerに追加しました。
  • Statementにリテラルと単純な識別子を含めるためのサポートが追加されました。
  • メソッドが非推奨となったJava SEバージョンを明確化

JDBC 4.2 APIで導入されたjava.sqljavax.sqlの機能

  • JDBCType列挙とSQLTypeインタフェースの追加
  • CallableStatementでのREF CURSORのサポート
  • LOBの最大論理サイズとREF CURSORのサポートの有無を返すDatabaseMetaDataメソッド
  • 大きい更新カウントのサポートの追加

JDBC 4.1 APIで導入されたjava.sqljavax.sqlの機能

  • ConnectionResultSet、およびStatementオブジェクトをtry-with-resources文で使用できる
  • CallableStatementResultSetにサポートが追加され、getObjectメソッドを使用して変換するJava型を指定しました。
  • DatabaseMetaDataの擬似列を返すメソッドおよび生成されたキーが常に返されるかどうかを返すメソッド
  • データベース・スキーマを指定し、物理接続を中止およびタイム・アウトさせるためのサポートのConnectionへの追加。
  • 依存するオブジェクトがクローズされた場合に、Statementオブジェクトをクローズするサポートの追加
  • DriverDataSourceConnectionPoolDataSourceおよびXADataSourceの親ロガーの取得のサポート

JDBC 4.0 APIで導入されたjava.sqljavax.sqlの機能

  • 自動java.sql.Driver検出 -- Class.forNameを使用したjava.sql.Driverクラスのロードは不要
  • 各国の文字セット・サポートの追加
  • SQL:2003 XMLデータ型に対するサポートの追加
  • SQLExceptionの拡張機能 -- 原因チェーンのサポートの追加。共通のSQLStateクラスの値コード用の新しいSQLExceptionの追加
  • BLOB/CLOB機能の拡張 -- BLOB/CLOBインスタンスを作成して解放するためのサポートの提供、およびアクセシビリティを向上させるメソッドの追加
  • SQL ROWIDにアクセスするためのサポートの追加
  • JDBCアプリケーションで、通常はアプリケーション・サーバーまたは接続プール環境にある、ベンダーによってラップされたJDBCリソースのインスタンスにアクセスするためのサポートの追加
  • PooledConnectionに関連付けられたPreparedStatementがクローズされたか、無効であるとドライバが判断したときに通知される機能

JDBC 3.0 APIで導入されたjava.sqljavax.sqlの機能

  • プール文 -- プール接続に関連した文を再利用する
  • セーブポイント -- 指定されたセーブポイントまでトランザクションをロールバックする
  • ConnectionPoolDataSourceに定義されたプロパティ -- 接続のプール方法を指定する
  • PreparedStatementオブジェクトのパラメータのメタデータ
  • 自動生成された列から値を取得する
  • 同時にオープンされているCallableStatementオブジェクトから複数のResultSetオブジェクトを返す
  • CallableStatementオブジェクトへのパラメータを名前とインデックスによって識別する
  • ResultSet保持機能 -- トランザクションの終了時にカーソルをオープンの状態に保持するべきかクローズの状態に保持するべきかを指定する
  • Refオブジェクトが参照するSQL構造化型インスタンスを取得および更新する
  • BLOBCLOBARRAY、およびREFの各値をプログラムによって更新する。
  • java.sql.Types.DATALINKデータ型の追加 -- JDBCドライバがデータ・ソースの外部に格納されたオブジェクトにアクセスできるようにする
  • SQL型階層を取得するメタデータの追加

JDBC 2.1コアAPIで導入されたjava.sql機能

  • スクロール可能な結果セット -- 現在位置から特定の行または位置へのカーソルの相対的な移動を可能にする、ResultSetインタフェースの新しいメソッドを使用
  • バッチ更新
  • プログラムによる更新 -- ResultSet更新用メソッドを使用
  • 新しいデータ型 -- SQL3データ型をマッピングするインタフェース
  • ユーザー定義型(UDT)のカスタム・マッピング
  • その他の機能として、パフォーマンスのヒント、文字ストリームの使用、java.math.BigDecimal値の全精度、追加セキュリティ、日、時間、およびタイムスタンプの各値でのタイムゾーンのサポートなど。

JDBC 2.0オプション・パッケージAPIで導入されたjavax.sql機能

  • 接続を確立するための手段としてのDataSourceインタフェース。 Java Naming and Directory Interface (JNDI)は、DataSourceオブジェクトをネーミング・サービスに登録するため、およびそれを取得するために使用されます。
  • プール接続 -- 接続の使用と再利用を可能にする
  • 分散トランザクション -- 多様なDBMSサーバーに及ぶトランザクションを可能にする
  • RowSetテクノロジ -- データを処理して渡す便利な手段を提供する

UDTのカスタム・マッピング

SQLで定義したユーザー定義型(UDT)をJavaプログラミング言語のクラスにマッピングできます。 SQL構造化型またはSQL DISTINCT型が、カスタム・マッピングできるUDTです。 次の3つのステップで、カスタム・マッピングを設定します。
  1. SQL構造化型またはSQL DISTINCT型をSQLで定義します
  2. SQL UDTをマッピングするJavaプログラミング言語のクラスを定義します。 このクラスはSQLDataインタフェースを実装している必要があります。
  3. 次の2項目を含むConnectionオブジェクトの型マップにエントリを作成します。
    • UDTの完全指定されたSQL名
    • SQLDataインタフェースを実装するクラスのClassオブジェクト

これらがUDTの該当位置にあると、ResultSet.getObjectまたはCallableStatement.getObjectメソッドを呼び出した場合にUDTは自動的にUDTへのカスタム・マッピングを取得します。 また、PreparedStatement.setObjectは、オブジェクトをそのSQL型へ自動的にマッピングしてデータ・ソースにオブジェクトを格納します。

パッケージの仕様

導入されたバージョン:
1.1