重要なJDBCクラスおよびインタフェース
標準およびTimesTen固有のJDBCパッケージ、クラスおよびインタフェースのサポートについて説明します。
次の内容を含みます。
標準JDBCの参照情報は、次の場所にあるjava.sqlおよびjavax.sqlパッケージについての情報を参照してください。
https://docs.oracle.com/javase/8/docs/api/java/sql/package-summary.htmlhttps://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インタフェース)を使用します。