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.