重要なJDBCクラスおよびインタフェース
標準およびTimesTen固有のJDBCパッケージ、クラスおよびインタフェースのサポートについて説明します。
次の内容を含みます。
標準JDBCの参照情報は、次の場所にあるjava.sql
およびjavax.sql
パッケージについての情報を参照してください。
https://docs.oracle.com/javase/8/docs/api/java/sql/package-summary.html
https://docs.oracle.com/javase/8/docs/api/javax/sql/package-summary.html
TimesTen JDBC拡張のリファレンス情報は、Oracle TimesTen In-Memory Database JDBC拡張Java APIリファレンスを参照してください。
ノート:
TimesTenでは、Java 8 API (JDBC 4.2)がサポートされます。
パッケージのインポート
アプリケーション用にいくつかのJDBCパッケージをインポートする必要があります。
JDBCを使用するJavaプログラムには、標準のJDBCパッケージをインポートします。
import java.sql.*;
データ・ソースまたはプールされている接続を使用する場合は、標準拡張JDBCパッケージもインポートします。
import javax.sql.*;
TimesTen JDBCパッケージをインポートします。
import com.timesten.jdbc.*;
JTAにXAデータ・ソースを使用するには、このTimesTenパッケージもインポートします。
import com.timesten.jdbc.xa.*;
java.sqlパッケージ内のインタフェースのサポート
TimesTenでは、java.sql
のインタフェースがサポートされています。
表2-1に、サポートされているインタフェースを示し、TimesTen固有のサポート状況および制限事項も示します。
「TimesTen JDBC拡張機能」も参照してください。
表2-1 サポートされているjava.sqlインタフェース
java.sql内のインタフェース | TimesTenでのサポートに関する注意事項 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
java.sqlパッケージ内のクラスのサポート
TimesTenでは、特定のjava.sql
クラス(およびSQLException
の一部のサブクラス)がサポートされています。
表2-2 サポートされているjava.sqlクラス
java.sql内のインタフェース | TimesTenでのサポートに関する注意事項 |
---|---|
|
注意事項なし |
|
注意事項なし |
|
注意事項なし |
|
注意事項なし |
|
TimesTenは |
|
|
|
注意事項なし |
|
注意事項なし |
|
注意事項なし |
|
注意事項なし |
java.ioパッケージ内のクラスのサポートに関するノート
TimesTenでのjava.io
パッケージ内のクラスのサポートについて特別な注意事項を示します。
-
TimesTenによって返される
InputStream
オブジェクトは、マークまたはリセット操作(具体的にはmark()
、markSupported()
およびreset()
メソッド)をサポートしていません。 -
InputStream
またはReader
オブジェクト内のデータ量にかかわらず、メソッド・コールで使用されるバッファ長が0のとき、InputStream
またはReader
オブジェクトのread()
メソッドでは0(ゼロ)が返されます。したがって、SQLEMPTY_CLOB()
ファンクションを使用して入力した場合のように、CLOBの長さが0のとき、次のような使用は問題になることがあります。java.io.Reader r = myclob.getCharacterStream(); char[] buf = new char[myclob.length()]; //buf for r.read() call
通常、
read()
をコールして、ストリームの最後に達すると-1が返されます。ただし、前の例では-1が返されることはありません。InputStream
を返すBLOBgetBinaryStream()
メソッド、InputStream
を返すCLOBgetAsciiStream()
メソッド、Reader
を返すCLOBgetCharacterStream()
メソッドによって返されるストリームを使用する場合は、これに注意してください。
javax.sqlパッケージ内のインタフェースとクラスのサポート
TimesTenでは、特定のjavax.sql
インタフェースがサポートされています。
-
CommonDataSource
およびDataSource
はTimesTenDataSource
によって実装されています。TimesTenでは
java.util.logging
を使用しないため、CommonDataSource
で指定されたgetParentLogger()
メソッドはSQLFeatureNotSupportedException
を返します。(TimesTenドライバはjava.util.logging
機能よりも上位にあり、独自のロギング・メカニズムを使用します。) -
PooledConnection
は、ObservableConnection
で実装されています。 -
ConnectionPoolDataSource
はObservableConnectionDS
で実装されています。 -
XADataSource
はTimesTenXADataSource
(com.timesten.jdbc.xa
パッケージ内)で実装されています。
ノート:
TimesTen JDBCドライバ自身は、データベース接続プールを実装していません。ObservableConnection
およびObservableConnectionDS
クラスは、標準Java EEインタフェースを実装しているだけであり、Java EE標準に基づいたデータベース接続プールの作成および管理を簡単に行えます。
TimesTenではこのjavax.sql
イベント・リスナーをサポートしています。
-
PooledConnection
インスタンスの使用時、ConnectionEventListener
インスタンスを登録しConnectionEvent
の出現をリスニングできます。
ノート:
TimesTenではStatementEventListener
インスタンスは登録できますが、StatementEvent
インスタンスはサポートされていません。
TimesTen JDBC拡張機能
ほとんどのシナリオには、TimesTenでサポートされている標準のJDBC機能を使用できます。ただし、TimesTenでは、TimesTen固有の機能に対して、com.timesten.jdbc
パッケージ内に拡張機能も用意されています。
これを表2-3に示します。
表2-3 TimesTen JDBC拡張機能
インタフェース | 拡張 | 注意事項 |
---|---|---|
|
|
「ラージ・オブジェクト(LOB)」を参照してください。 |
|
|
PL/SQL REF CURSORのサポート。「REF CURSORの使用」を参照してください。 入力パラメータを設定し出力パラメータを取得および登録するメソッドとともに、連想配列バインドをサポートしています。「連想配列の使用」を参照してください。 |
|
|
「ラージ・オブジェクト(LOB)」を参照してください。 |
|
|
パフォーマンスの向上のための行のプリフェッチ、問合せのパフォーマンスの最適化、自動クライアント・フェイルオーバーのためのイベントのリスニング、レプリケーション・トラックを指定するパラレル・レプリケーション・スキームのトラック番号の設定、データベースの妥当性のチェック、およびクライアント/サーバーの結果セット・バッファの最大行数またはバイト数の設定などの機能を提供します。 「複数のデータ行のフェッチ」、「問合せパフォーマンスの最適化」、「一般的なクライアント・フェイルオーバー機能」、「レプリケーションで使用する機能」、「データベースの妥当性の確認」および「JDBCを使用したクライアント/サーバーでの結果セット・バッファ・サイズの構成」を参照してください。 |
|
|
「ラージ・オブジェクト(LOB)」を参照してください。 |
|
|
DML RETURNINGをサポートしています。「DML RETURNING (RETURNING INTO句)の使用」を参照してください。 入力パラメータを設定するメソッドとともに連想配列のバインドをサポートしています。「連想配列の使用」を参照してください。 |
|
|
クライアント/サーバーの結果セット・バッファについて、問合せしきい値を指定したり、行またはバイトの最大数を設定または取得する機能を提供します。「SQL文のしきい値期間の設定」および「JDBCを使用したクライアント/サーバーでの結果セット・バッファ・サイズの構成」を参照してください |
その他のTimesTenクラスおよびインタフェース
前述の実装に加えて、com.timesten.jdbc
パッケージには、インタフェースおよびクラスがあります。
これらのインタフェースおよびクラスでサポートされた機能は、この章の後半で説明します。
-
TimesTen型の拡張(TimesTen REF CURSORなど)にインタフェース
TimesTenTypes
を使用します。 -
自動クライアント・フェイルオーバー機能に、インタフェース
ClientFailoverEventListener
(および次に説明するClientFailoverEvent
クラス)を使用します。「自動クライアント・フェイルオーバーのJDBCサポート」を参照してください。 -
SQL例外に使用されるベンダー・コードに、インタフェース
TimesTenVendorCode
を使用します。 -
TimesTen Scaleoutでのクライアント・ルーティングにインタフェース
TimesTenDistributionKey
およびTimesTenDistributionKeyBuilder
を使用します。「TimesTen Scaleoutのクライアント・ルーティングAPI」を参照してください -
インタフェース
TimesTenConnectionBuilder
を使用して、分散キー、要素IDまたはレプリカ・セットIDに基づいて最適な要素に接続します。「分散キーに基づく要素への接続」を参照してください。 -
自動クライアント・フェイルオーバー機能に、クラス
ClientFailoverEvent
(および前述のClientFailoverEventListener
インタフェース)を使用します。