Cosminexus 機能解説
ここでは,Cosminexus DABroker Libraryで提供する,JDBC2.0基本規格に沿った機能の概要と注意事項について説明します。JDBC1.0が提供するクラスとメソッドの機能,およびJDBC2.0で規格化されていないDBPドライバだけの機能については,マニュアル「Cosminexus リファレンス API編」を参照してください。
JDBC2.0基本規格では,ResultSet(ResultSetクラス)の拡張機能として,「スクロール」と「並行処理」が追加されています。
ResultSetのスクロールタイプには,次の3種類があります。
ResultSetの並行処理タイプには,次の種類があります。
スクロールタイプと並行処理タイプを組み合わせることで,ResultSetには6種類のタイプがあります。Cosminexus DABroker Libraryでは,このうち2種類をサポートしています。ResultSetタイプは,ConnectionクラスのcreateStatementメソッド,prepareStatementメソッド,またはprepareCallメソッドで,Statementクラス(またはそのサブクラス)のインスタンスを取得する時に指定します。
6種類のResultSetタイプとCosminexus DABroker Libraryでのサポートを,次の表に示します。
表I-1 ResultSetのタイプ
| ResultSetタイプ | Cosminexus DABroker Libraryでのサポート | |
|---|---|---|
| スクロールタイプ | 並行処理タイプ | |
| 順方向専用型 | 読み取り専用型 | ○ |
| 更新可能型 | × | |
| スクロール非反映型 | 読み取り専用型 | ○ |
| 更新可能型 | × | |
| スクロール反映型 | 読み取り専用型 | × |
| 更新可能型 | × | |
サポートしていないResultSetタイプが指定された場合,エラーにはしないで,指定されたResultSetタイプにいちばん近いResultSetタイプを使用してStatementクラス(またはそのサブクラス)のインスタンスを生成します。また,警告メッセージをConnectionクラスのSQLWarningに格納します。
更新可能型の並行処理タイプはサポートしていないため,ResultSetクラスに使用できないメソッドがあります。これらの使用できないメソッドが呼び出された場合は,無条件にSQLExceptionをthrowします。どのメソッドが使用できないかについては,マニュアル「Cosminexus リファレンス API編」を参照してください。
スクロール型ResultSetでは,Cosminexus DABroker Library内ですべての検索データをキャッシングします。データ量が大量な場合は,メモリ不足や性能劣化が発生する可能性が大きくなります。このため,スクロール型ResultSetを使用する場合は,「SQLに条件を付加する」,「StatementクラスのsetMaxRowsメソッドを呼び出す」など,検索データ量をあらかじめ抑制してください。
JDBC2.0基本規格では,Statementクラス,PreparedStatementクラス,およびCallableStatementクラスにバッチ更新機能が追加されています。バッチ更新機能を使うと,複数のSQL,または複数のパラメタ値を登録し,一括で実行できます。
HiRDBの場合のバッチ更新処理は,次の2種類に分けられます。
HiRDBの配列更新機能とは,データベースにより提供される次の機能を指します。
HiRDBの配列更新機能では,複数の?パラメタセットを配列形式で扱い,一度に処理することができます。そのため,データベースとの通信回数が減り,大量のデータを高速に更新できます。
HiRDBの配列更新機能を使用するには,BlockUpdate設定をtrueにします。ただし,接続するHiRDBのバージョンによって使用できない場合があります。HiRDBの配列更新機能の詳細については,マニュアル「HiRDB UAP開発ガイド」およびマニュアル「HiRDB SQLリファレンス」を参照してください。
次に,バッチ更新時に使用するaddBatchメソッド−executeBatchメソッド使用時の仕様を,BlockUpdate設定がtrueの場合とfalseの場合に分けて示します。
表I-2 addBatchメソッド−executeBatchメソッド使用時の仕様(BlockUpdate設定がtrue,HiRDBの場合)
| 実行するSQL文 | DABrokerの仕様(処理方法) | |||
|---|---|---|---|---|
| HiRDB Version 6 | HiRDB Version 7 07-00以降かつ07-00-/K以前 | HiRDB Version 7 07-00-/L以降かつHiRDB Version 7 07-01未満 | HiRDB Version 7 07-01以降 | |
| INSERT文 (VALUES句指定) |
逐次実行 | 一括実行 | 一括実行 | 一括実行 |
| INSERT文 (SELECT句指定) |
逐次実行 | KFPA19408-E | 逐次実行 | 一括実行 |
| UPDATE文 | 逐次実行 | KFPA19408-E | 逐次実行 | 一括実行 |
| DELETE文 | 逐次実行 | KFPA19408-E | 逐次実行 | 一括実行 |
| CALL文(OUTまたはINOUTパラメタあり) | KFDJ00010-E | KFDJ00010-E | KFDJ00010-E | KFDJ00010-E |
| CALL文(INパラメタだけ) | 逐次実行 | 逐次実行 | 逐次実行 | 逐次実行 |
表I-3 addBatchメソッド−executeBatchメソッド使用時の仕様(BlockUpdate設定がfalseまたは指定なし,HiRDBの場合)
| 実行するSQL文 | DABrokerの仕様(処理方法) |
|---|---|
| INSERT文(VALUES句指定) | 逐次実行 |
| INSERT文(SELECT句指定) | 逐次実行 |
| UPDATE文 | 逐次実行 |
| DELETE文 | 逐次実行 |
| SELECT文 | KFDJ00010-E |
| CALL文(OUTまたはINOUTパラメタあり) | KFDJ00010-E |
| CALL文(INパラメタだけ) | 逐次実行 |
表I-4 addBatchメソッド−executeBatchメソッド使用時の仕様(BlockUpdate設定がtrue,HiRDBクライアント経由XDM/RD E2の場合)
| 実行するSQL | DABrokerの仕様(処理方式) | ||
|---|---|---|---|
| HiRDBクライアント08-02未満 | HiRDBクライアント08-02以降 | ||
| XDM/RD E2(11-03未満) | XDM/RD E2(11-03以降) | ||
| INSERT文(VALUES句指定) | 逐次実行 | 逐次実行 | 一括実行 |
| INSERT文(SELECT句指定) | 逐次実行 | 逐次実行 | 一括実行 |
| UPDATE文 | 逐次実行 | 逐次実行 | 一括実行 |
| DELETE文 | 逐次実行 | 逐次実行 | 一括実行 |
| SELECT文 | KFDJ00010-E | KFDJ00010-E | KFDJ00010-E |
| CALL文(OUT,またはINOUTパラメタ有) | KFDJ00010-E | KFDJ00010-E | KFDJ00010-E |
| CALL文(INパラメタだけ) | 逐次実行 | 逐次実行 | 逐次実行 |
表I-5 addBatchメソッド−executeBatchメソッド使用時の仕様(BlockUpdate設定がfalseまたは指定なし,HiRDBクライアント経由XDM/RD E2の場合)
| 実行するSQL文 | DABrokerの仕様 |
|---|---|
| INSERT文(VALUES句指定) | 逐次実行 |
| INSERT文(SELECT句指定) | 逐次実行 |
| UPDATE文 | 逐次実行 |
| DELETE文 | 逐次実行 |
| SELECT文 | KFDJ00010-E |
| CALL文(OUT,またはINOUTパラメタあり) | KFDJ00010-E |
| CALL文(INパラメタだけ) | 逐次実行 |
HiRDBの配列更新機能の使用方法を次に示します。
ここでは,Oracleの場合のバッチ更新について説明します。
次に,PreparedStatementおよびCallableStatementでのaddBatchメソッド−executeBatchメソッド使用時の仕様を,BlockUpdate設定がtrueの場合,falseの場合に分けて示します。
表I-6 addBatchメソッド−executeBatchメソッド使用時の仕様(BlockUpdate設定がtrue,Oracleの場合)
| 実行するSQL文 | DABrokerの仕様(処理方法) |
|---|---|
| INSERT文(VALUES句指定) | 逐次実行 |
| INSERT文(SELECT句指定) | 逐次実行 |
| UPDATE文 | 逐次実行 |
| DELETE文 | 逐次実行 |
| SELECT文 | KFDJ00010-E |
| BEGIN文(OUTまたはINOUTパラメタあり) | KFDJ00010-E |
| BEGIN文(INパラメタだけ) | 逐次実行 |
表I-7 addBatchメソッド−executeBatchメソッド使用時の仕様(BlockUpdate設定がfalseまたは指定なし,Oracleの場合)
| 実行するSQL文 | DABrokerの仕様(処理方法) |
|---|---|
| INSERT文(VALUES句指定) | 逐次実行 |
| INSERT文(SELECT句指定) | 逐次実行 |
| UPDATE文 | 逐次実行 |
| DELETE文 | 逐次実行 |
| SELECT文 | KFDJ00010-E |
| BEGIN文(OUTまたはINOUTパラメタあり) | KFDJ00010-E |
| BEGIN文(INパラメタだけ) | 逐次実行 |
JDBC2.0基本規格では,幾つかの新しいJDBC SQLタイプが追加されています。追加されたJDBC SQLタイプとCosminexus DABroker Libraryでのサポートを,次の表に示します。
表I-8 追加されたJDBC SQLタイプとCosminexus DABroker Libraryでのサポート
| 追加されたJDBC SQLタイプ | Cosminexus DABroker Libraryでのサポート |
|---|---|
| BLOB | ○ |
| CLOB | △ |
| ARRAY | × |
| REF | × |
| DISTINCT | × |
| STRUCT | × |
| JAVA OBJECT | × |
追加されたJDBC SQLタイプと,ResultSetクラスのgetXXXメソッドとのデータ変換について,次の表に示します。変換できないJDBC SQLタイプに対してgetXXXメソッドが呼び出された場合は,SQLExceptionをthrowします。接続データベースがどのJDBC SQLタイプをサポートしているかは,「付録I.7 データ型の対応」を参照してください。
なお,JDBC2.0規格ではgetUnicodeStreamメソッドが推奨されないメソッドとなったため,代わりにgetCharacterStreamが追加されています。
表I-9 ResultSetクラスのgetXXXメソッドとJDBC SQLタイプとのデータ変換 (1)
| getXXXメソッド | JDBC SQLタイプ | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| B I T |
T I N Y I N T |
S M A L L I N T |
I N T E G E R |
B I G I N T |
F L O A T |
R E A L |
D O U B L E |
N U M E R I C |
D E C I M A L |
C H A R |
V A R C H A R |
L O N G V A R C H A R |
|
| getByte | ○ | ◎ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| getShort | ○ | ○ | ◎ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| getInt | ○ | ○ | ○ | ◎ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| getLong | ○ | ○ | ○ | ○ | ◎ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| getFloat | ○ | ○ | ○ | ○ | ○ | ○ | ◎ | ○ | ○ | ○ | ○ | ○ | ○ |
| getDouble | ○ | ○ | ○ | ○ | ○ | ◎ | ○ | ◎ | ○ | ○ | ○ | ○ | ○ |
| getBigDecimal | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ◎ | ◎ | ■ | ○ | ○ |
| getBoolean | ◎ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| getString | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ◎ | ◎ | ○ |
| getBytes | − | − | − | − | − | − | − | − | − | − | − | − | − |
| getDate※1 | − | − | − | − | − | − | − | − | − | − | ○ | ○ | ○ |
| getTime※1 | − | − | − | − | − | − | − | − | − | − | ○ | ○ | ○ |
| getTimestamp※1 | − | − | − | − | − | − | − | − | − | − | ○ | ○ | ○ |
| getAsciiStream | − | − | − | − | − | − | − | − | − | − | ○ | ○ | ◎ |
| getUnicodeStream | − | − | − | − | − | − | − | − | − | − | ○ | ○ | ◎ |
| getBinaryStream | − | − | − | − | − | − | − | − | − | − | − | − | − |
| getObject | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| getCharacter Stream |
− | − | − | − | − | − | − | − | − | − | ○ | ○ | ◎ |
| getArray (未サポート) |
− | − | − | − | − | − | − | − | − | − | − | − | − |
| getBlob※2 | − | − | − | − | − | − | − | − | − | − | − | − | − |
| getClob※3 | − | − | − | − | − | − | − | − | − | − | − | − | − |
| getRef (未サポート) |
− | − | − | − | − | − | − | − | − | − | − | − | − |
表I-10 ResultSetクラスのgetXXXメソッドとJDBC SQLタイプとのデータ変換 (2)
| getXXXメソッド | JDBC SQLタイプ | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| D A T E |
T I M E |
T I M E S T A M P |
B I N A R Y |
V A R B I N A R Y |
L O N G V A R B I N A R Y |
J A V A O B J E C T |
S T R U C T |
A R R A Y |
B L O B |
C L O B |
R E F |
|
| getByte | − | − | − | − | − | − | − | − | − | − | − | − |
| getShort | − | − | − | − | − | − | − | − | − | − | − | − |
| getInt | − | − | − | − | − | − | − | − | − | − | − | − |
| getLong | − | − | − | − | − | − | − | − | − | − | − | − |
| getFloat | − | − | − | − | − | − | − | − | − | − | − | − |
| getDouble | − | − | − | − | − | − | − | − | − | − | − | − |
| getBigDecimal | − | − | − | − | − | − | − | − | − | − | − | − |
| getBoolean | − | − | − | − | − | − | − | − | − | − | − | − |
| getString | ○ | ○ | ○ | ○ | ○ | ○ | − | − | − | − | − | − |
| getBytes | − | − | − | ◎ | ◎ | ○ | − | − | − | − | − | − |
| getDate※1 | ◎ | − | ○ | − | − | − | − | − | − | − | − | − |
| getTime※1 | − | ◎ | ○ | − | − | − | − | − | − | − | − | − |
| getTimestamp※1 | ○ | − | ◎ | − | − | − | − | − | − | − | − | − |
| getAsciiStream | − | − | − | ○ | ○ | ○ | − | − | − | − | − | − |
| getUnicodeStream | − | − | − | ○ | ○ | ○ | − | − | − | − | − | − |
| getBinaryStream | − | − | − | ○ | ○ | ◎ | − | − | − | − | − | − |
| getObject | ○ | ○ | ○ | ○ | ○ | ○ | ▲ | ▲ | △ | ▼ | ▼ | △ |
| getCharacter Stream |
− | − | − | ○ | ○ | ○ | − | − | − | − | − | − |
| getArray (未サポート) |
− | − | − | − | − | − | − | − | ▲ | − | − | − |
| getBlob※2 | − | − | − | − | − | ○※4 | − | − | − | ● | − | − |
| getClob※3 | − | − | − | − | − | − | − | − | − | − | ● | − |
| getRef (未サポート) |
− | − | − | − | − | − | − | − | − | − | − | ▲ |
追加されたJDBC SQLタイプと,PreparedStatementクラスのsetXXXメソッドとのデータ変換について,次の表に示します。JDBC SQLタイプをサポートしていない場合,setXXXメソッドはSQLExceptionをthrowします。接続データベースがどのJDBC SQLタイプをサポートしているかは,「付録I.7 データ型の対応」を参照してください。
なお,JDBC2.0規格では,setUnicodeStreamメソッドが推奨されないメソッドとなったため,代わりにsetCharacterStreamが追加されています。
表I-11 追加されたJDBC SQLタイプとsetXXXメソッド
| setXXXメソッド | データ変換されるJDBC SQLタイプ |
|---|---|
| setCharacterStream | CHAR,VARCHAR,またはLONGVARCHAR |
| setRef(未サポート) | REF |
| setBlob※1 | BLOB,LONGVARBINARY |
| setClob※2 | CLOB |
| setArray(未サポート) | ARRAY |
表I-12 setXXXメソッドとJDBC SQLタイプとのデータ変換 (1)
| setXXXメソッド | JDBC SQLタイプ | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| B I T |
T I N Y I N T |
S M A L L I N T |
I N T E G E R |
B I G I N T |
F L O A T |
R E A L |
D O U B L E |
N U M E R I C |
D E C I M A L |
C H A R |
V A R C H A R |
L O N G V A R C H A R |
|
| setByte | ○ | ◎ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| setShort | ○ | ○ | ◎ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| setInt | ○ | ○ | ○ | ◎ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| setLong | ○ | ○ | ○ | ○ | ◎ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| setFloat | ○ | ○ | ○ | ○ | ○ | ○ | ◎ | ○ | ○ | ○ | ○ | ○ | ○ |
| setDouble | ○ | ○ | ○ | ○ | ○ | ◎ | ○ | ◎ | ○ | ○ | ○ | ○ | ○ |
| setBigDecimal | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ◎ | ◎ | ○ | ○ | ○ |
| setBoolean | ◎ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| setString | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ◎ | ◎ | ○ |
| setBytes | − | − | − | − | − | − | − | − | − | − | − | − | − |
| setDate | − | − | − | − | − | − | − | − | − | − | ○ | ○ | ○ |
| setTime | − | − | − | − | − | − | − | − | − | − | ○ | ○ | ○ |
| setTimestamp | − | − | − | − | − | − | − | − | − | − | ○ | ○ | ○ |
| setAsciiStream | − | − | − | − | − | − | − | − | − | − | ○※4 | ○※4 | ○※4 |
| setUnicodeStream※1 | − | − | − | − | − | − | − | − | − | − | ○ | ○ | ○ |
| setBinaryStream | − | − | − | − | − | − | − | − | − | − | − | − | − |
| setObject | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| setCharacterStream | − | − | − | − | − | − | − | − | − | − | ○※5 | ○※5 | ○※5 |
| setArray (未サポート) |
− | − | − | − | − | − | − | − | − | − | − | − | − |
| setBlob※2 | − | − | − | − | − | − | − | − | − | − | − | − | − |
| setClob※3 | − | − | − | − | − | − | − | − | − | − | − | − | − |
| setRef (未サポート) |
− | − | − | − | − | − | − | − | − | − | − | − | − |
表I-13 setXXXメソッドとJDBC SQLタイプとのデータ変換(2)
| setXXXメソッド | JDBC SQLタイプ | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| D A T E |
T I M E |
T I M E S T A M P |
B I N A R Y |
V A R B I N A R Y |
L O N G V A R B I N A R Y |
J A V A O B J E C T |
S T R U C T |
A R R A Y |
B L O B |
C L O B |
R E F |
|
| setByte | − | − | − | − | − | − | − | − | − | − | − | − |
| setShort | − | − | − | − | − | − | − | − | − | − | − | − |
| setInt | − | − | − | − | − | − | − | − | − | − | − | − |
| setLong | − | − | − | − | − | − | − | − | − | − | − | − |
| setFloat | − | − | − | − | − | − | − | − | − | − | − | − |
| setDouble | − | − | − | − | − | − | − | − | − | − | − | − |
| setBigDecimal | − | − | − | − | − | − | − | − | − | − | − | − |
| setBoolean | − | − | − | − | − | − | − | − | − | − | − | − |
| setString | ○ | ○ | ○ | ○ | ○ | ○ | − | − | − | − | − | − |
| setBytes | − | − | − | ◎ | ◎ | ○ | − | − | − | − | − | − |
| setDate | ◎ | − | ○ | − | − | − | − | − | − | − | − | − |
| setTime | − | ◎ | ○ | − | − | − | − | − | − | − | − | − |
| setTimestamp | ○ | − | ◎ | − | − | − | − | − | − | − | − | − |
| setAsciiStream | − | − | − | ○ | ○※4 | ○※4 | − | − | − | − | − | − |
| setUnicodeStream※3 | − | − | − | ○ | ○ | ○ | − | − | − | − | − | − |
| setBinaryStream | − | − | − | ○ | ○※4 | ○※4 | − | − | − | − | − | − |
| setObject | ○ | ○ | ○ | ○ | ○ | ○ | ▲ | ▲ | △ | ▼ | ▼ | △ |
| setCharacterStream | − | − | − | ○※5 | ○※5 | ○※5 | − | − | − | − | − | − |
| setArray(未サポート) | − | − | − | − | − | − | − | − | ▲ | − | − | − |
| setBlob※1 | − | − | − | − | − | ○※1 | − | − | − | ●※2※4 | − | − |
| setClob※2 | − | − | − | − | − | − | − | − | − | − | ●※4 | − |
| setRef(未サポート) | − | − | − | − | − | − | − | − | − | − | − | ▲ |
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.