インターフェース LobHandler
- すべての既知の実装クラス:
AbstractLobHandler
,DefaultLobHandler
BLOB および CLOB のアクセサーメソッドを提供し、LobCreator インスタンスのファクトリとして機能し、BLOB または CLOB を作成するためのセッションとして使用されます。LobCreators は通常、ステートメントの実行ごとまたはトランザクションごとにインスタンス化されます。実行後に解放するために割り当てられたデータベースリソースを追跡する可能性があるため、スレッドセーフではありません。
ほとんどのデータベース / ドライバーは DefaultLobHandler
で動作するはずです。これはデフォルトで JDBC のダイレクトアクセサーメソッドに委譲され、java.sql.Blob
および java.sql.Clob
API を完全に回避します。DefaultLobHandler
は、"wrapAsLob"
プロパティを設定することで、PreparedStatement.setBlob/setClob
(PostgreSQL など)を使用して LOB にアクセスするように構成することもできます。
もちろん、データベースごとに異なるフィールド型を宣言する必要があります。Oracle では、バイナリコンテンツは BLOB に入れる必要があり、4000 バイトを超えるすべての文字コンテンツは CLOB に入れる必要があります。MySQL では、CLOB 型の概念はなく、VARCHAR のように動作する LONGTEXT 型があります。完全な移植性のために、フィールドサイズのために一部のデータベースで LOB を通常必要とする可能性のあるフィールドには LobHandler を使用します(ガイドラインとして Oracle の数値を使用します)。
推奨オプションの要約(実際の LOB フィールドの場合):
- JDBC 4.0 ドライバー(Oracle 11g ドライバーを含む) :
DefaultLobHandler
を使用します。LOB フィールドにデータを入力するときにデータベースドライバーがそのヒントを必要とする場合は、streamAsLob=true
を使用する可能性があります。(Oracle)データベースのセットアップで LOB サイズの制限に遭遇した場合は、createTemporaryLob=true
にフォールバックしてください。 - Oracle 10g ドライバー : 標準設定で
DefaultLobHandler
を使用します。Oracle 10.1 で、"SetBigStringTryClob" 接続プロパティを設定します。Oracle 10.2 以降、DefaultLobHandler は標準の設定でそのまま動作します。 - PostgreSQL:
wrapAsLob=true
を使用してDefaultLobHandler
を構成し、その LobHandler を使用してデータベーステーブルの OID 列(BYTEA ではない)にアクセスします。 - 他のすべてのデータベースドライバー(および一部のデータベースで LOB に変換される可能性がある非 LOB フィールド)の場合: 単純な
DefaultLobHandler
を使用するだけです。
メソッドのサマリー
修飾子と型メソッド説明getBlobAsBinaryStream
(ResultSetSE rs, int columnIndex) 指定された ResultSet から、指定された列をバイナリストリームとして取得します。getBlobAsBinaryStream
(ResultSetSE rs, StringSE columnName) 指定された ResultSet から、指定された列をバイナリストリームとして取得します。byte[]
getBlobAsBytes
(ResultSetSE rs, int columnIndex) 指定された ResultSet から指定された列をバイトとして取得します。byte[]
getBlobAsBytes
(ResultSetSE rs, StringSE columnName) 指定された ResultSet から指定された列をバイトとして取得します。getClobAsAsciiStream
(ResultSetSE rs, int columnIndex) 指定された ResultSet から指定された列を ASCII ストリームとして取得します。getClobAsAsciiStream
(ResultSetSE rs, StringSE columnName) 指定された ResultSet から指定された列を ASCII ストリームとして取得します。getClobAsCharacterStream
(ResultSetSE rs, int columnIndex) 指定された ResultSet から、指定された列を文字ストリームとして取得します。getClobAsCharacterStream
(ResultSetSE rs, StringSE columnName) 指定された ResultSet から、指定された列を文字ストリームとして取得します。getClobAsString
(ResultSetSE rs, int columnIndex) 指定された ResultSet から指定された列を文字列として取得します。getClobAsString
(ResultSetSE rs, StringSE columnName) 指定された ResultSet から指定された列を文字列として取得します。新しいLobCreator
インスタンスを作成します。
メソッドの詳細
getBlobAsBytes
指定された ResultSet から指定された列をバイトとして取得します。データベースとドライバーに応じて、単にResultSet.getBytes
を呼び出すか、ResultSet.getBlob
を操作する場合があります。- パラメーター:
rs
- コンテンツを取得する ResultSetcolumnName
- 使用する列名- 戻り値:
- バイト配列としてのコンテンツ、または SQL NULL の場合は
null
- 例外:
SQLExceptionSE
- JDBC メソッドによってスローされた場合- 関連事項:
getBlobAsBytes
指定された ResultSet から指定された列をバイトとして取得します。データベースとドライバーに応じて、単にResultSet.getBytes
を呼び出すか、ResultSet.getBlob
を操作する場合があります。- パラメーター:
rs
- コンテンツを取得する ResultSetcolumnIndex
- 使用する列インデックス- 戻り値:
- バイト配列としてのコンテンツ、または SQL NULL の場合は
null
- 例外:
SQLExceptionSE
- JDBC メソッドによってスローされた場合- 関連事項:
getBlobAsBinaryStream
@Nullable InputStreamSE getBlobAsBinaryStream(ResultSetSE rs, StringSE columnName) throws SQLExceptionSE 指定された ResultSet から、指定された列をバイナリストリームとして取得します。データベースとドライバーに応じて、単にResultSet.getBinaryStream
を呼び出すか、ResultSet.getBlob
を操作します。- パラメーター:
rs
- コンテンツを取得する ResultSetcolumnName
- 使用する列名- 戻り値:
- バイナリストリームとしてのコンテンツ、または SQL NULL の場合は
null
- 例外:
SQLExceptionSE
- JDBC メソッドによってスローされた場合- 関連事項:
getBlobAsBinaryStream
@Nullable InputStreamSE getBlobAsBinaryStream(ResultSetSE rs, int columnIndex) throws SQLExceptionSE 指定された ResultSet から、指定された列をバイナリストリームとして取得します。データベースとドライバーに応じて、単にResultSet.getBinaryStream
を呼び出すか、ResultSet.getBlob
を操作します。- パラメーター:
rs
- コンテンツを取得する ResultSetcolumnIndex
- 使用する列インデックス- 戻り値:
- バイナリストリームとしてのコンテンツ、または SQL NULL の場合は
null
- 例外:
SQLExceptionSE
- JDBC メソッドによってスローされた場合- 関連事項:
getClobAsString
指定された ResultSet から指定された列を文字列として取得します。データベースとドライバーに応じて、単にResultSet.getString
を呼び出すか、ResultSet.getClob
を操作します。- パラメーター:
rs
- コンテンツを取得する ResultSetcolumnName
- 使用する列名- 戻り値:
- 文字列としてのコンテンツ、または SQL NULL の場合は
null
- 例外:
SQLExceptionSE
- JDBC メソッドによってスローされた場合- 関連事項:
getClobAsString
指定された ResultSet から指定された列を文字列として取得します。データベースとドライバーに応じて、単にResultSet.getString
を呼び出すか、ResultSet.getClob
を操作します。- パラメーター:
rs
- コンテンツを取得する ResultSetcolumnIndex
- 使用する列インデックス- 戻り値:
- 文字列としてのコンテンツ、または SQL NULL の場合は
null
- 例外:
SQLExceptionSE
- JDBC メソッドによってスローされた場合- 関連事項:
getClobAsAsciiStream
@Nullable InputStreamSE getClobAsAsciiStream(ResultSetSE rs, StringSE columnName) throws SQLExceptionSE 指定された ResultSet から指定された列を ASCII ストリームとして取得します。データベースとドライバーに応じて、単にResultSet.getAsciiStream
を呼び出すか、ResultSet.getClob
を操作します。- パラメーター:
rs
- コンテンツを取得する ResultSetcolumnName
- 使用する列名- 戻り値:
- ASCII ストリームとしてのコンテンツ、または SQL NULL の場合は
null
- 例外:
SQLExceptionSE
- JDBC メソッドによってスローされた場合- 関連事項:
getClobAsAsciiStream
指定された ResultSet から指定された列を ASCII ストリームとして取得します。データベースとドライバーに応じて、単にResultSet.getAsciiStream
を呼び出すか、ResultSet.getClob
を操作します。- パラメーター:
rs
- コンテンツを取得する ResultSetcolumnIndex
- 使用する列インデックス- 戻り値:
- ASCII ストリームとしてのコンテンツ、または SQL NULL の場合は
null
- 例外:
SQLExceptionSE
- JDBC メソッドによってスローされた場合- 関連事項:
getClobAsCharacterStream
指定された ResultSet から、指定された列を文字ストリームとして取得します。データベースとドライバーに応じて、単にResultSet.getCharacterStream
を呼び出すか、ResultSet.getClob
を操作します。- パラメーター:
rs
- コンテンツを取得する ResultSetcolumnName
- 使用する列名- 戻り値:
- 文字ストリームとしてのコンテンツ
- 例外:
SQLExceptionSE
- JDBC メソッドによってスローされた場合- 関連事項:
getClobAsCharacterStream
指定された ResultSet から、指定された列を文字ストリームとして取得します。データベースとドライバーに応じて、単にResultSet.getCharacterStream
を呼び出すか、ResultSet.getClob
を操作します。- パラメーター:
rs
- コンテンツを取得する ResultSetcolumnIndex
- 使用する列インデックス- 戻り値:
- 文字ストリームとしてのコンテンツ
- 例外:
SQLExceptionSE
- JDBC メソッドによってスローされた場合- 関連事項:
getLobCreator
LobCreator getLobCreator()新しいLobCreator
インスタンス、つまり BLOB と CLOB を作成するためのセッションを作成します。作成された LOB が不要になった後、通常はステートメントの実行後またはトランザクションの完了後に閉じる必要があります。- 戻り値:
- 新しい LobCreator インスタンス
- 関連事項: