インターフェース LobHandler
- すべての既知の実装クラス:
AbstractLobHandler,DefaultLobHandler
BLOB および CLOB のアクセサーメソッドを提供し、LobCreator インスタンスのファクトリとして機能し、BLOB または CLOB を作成するためのセッションとして使用されます。LobCreators は通常、ステートメントの実行ごとまたはトランザクションごとにインスタンス化されます。実行後に解放するために割り当てられたデータベースリソースを追跡する可能性があるため、スレッドセーフではありません。
ほとんどのデータベース / ドライバーは、デフォルトで JDBC の直接アクセサーメソッドに委譲し、java.sql.Blob および java.sql.Clob API を完全に回避する DefaultLobHandler で動作できるはずです。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 インスタンス
- 関連事項:
SqlBinaryValueとSqlCharacterValueを優先