インターフェース LobHandler

すべての既知の実装クラス:
AbstractLobHandlerDefaultLobHandler

public interface LobHandler
単純な型または大きなオブジェクトとして表されているかどうかに関係なく、特定のデータベースで大きなバイナリフィールドと大きなテキストフィールドを処理するための抽象化。

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 は標準の設定でそのまま動作します。
  • PostgreSQLwrapAsLob=true を使用して DefaultLobHandler を構成し、その LobHandler を使用してデータベーステーブルの OID 列(BYTEA ではない)にアクセスします。
  • 他のすべてのデータベースドライバー(および一部のデータベースで LOB に変換される可能性がある非 LOB フィールド)の場合: 単純な DefaultLobHandler を使用するだけです。
導入:
23.12.2003
作成者:
Juergen Hoeller
関連事項:
  • メソッドの詳細

    • getBlobAsBytes

      @Nullable byte[] getBlobAsBytes(ResultSetSE rs, StringSE columnName) throws SQLExceptionSE
      指定された ResultSet から指定された列をバイトとして取得します。データベースとドライバーに応じて、単に ResultSet.getBytes を呼び出すか、ResultSet.getBlob を操作する場合があります。
      パラメーター:
      rs - コンテンツを取得する ResultSet
      columnName - 使用する列名
      戻り値:
      バイト配列としてのコンテンツ、または SQL NULL の場合は null 
      例外:
      SQLExceptionSE - JDBC メソッドによってスローされた場合
      関連事項:
    • getBlobAsBytes

      @Nullable byte[] getBlobAsBytes(ResultSetSE rs, int columnIndex) throws SQLExceptionSE
      指定された ResultSet から指定された列をバイトとして取得します。データベースとドライバーに応じて、単に ResultSet.getBytes を呼び出すか、ResultSet.getBlob を操作する場合があります。
      パラメーター:
      rs - コンテンツを取得する ResultSet
      columnIndex - 使用する列インデックス
      戻り値:
      バイト配列としてのコンテンツ、または SQL NULL の場合は null 
      例外:
      SQLExceptionSE - JDBC メソッドによってスローされた場合
      関連事項:
    • getBlobAsBinaryStream

      @Nullable InputStreamSE getBlobAsBinaryStream(ResultSetSE rs, StringSE columnName) throws SQLExceptionSE
      指定された ResultSet から、指定された列をバイナリストリームとして取得します。データベースとドライバーに応じて、単に ResultSet.getBinaryStream を呼び出すか、ResultSet.getBlob を操作します。
      パラメーター:
      rs - コンテンツを取得する ResultSet
      columnName - 使用する列名
      戻り値:
      バイナリストリームとしてのコンテンツ、または SQL NULL の場合は null 
      例外:
      SQLExceptionSE - JDBC メソッドによってスローされた場合
      関連事項:
    • getBlobAsBinaryStream

      @Nullable InputStreamSE getBlobAsBinaryStream(ResultSetSE rs, int columnIndex) throws SQLExceptionSE
      指定された ResultSet から、指定された列をバイナリストリームとして取得します。データベースとドライバーに応じて、単に ResultSet.getBinaryStream を呼び出すか、ResultSet.getBlob を操作します。
      パラメーター:
      rs - コンテンツを取得する ResultSet
      columnIndex - 使用する列インデックス
      戻り値:
      バイナリストリームとしてのコンテンツ、または SQL NULL の場合は null 
      例外:
      SQLExceptionSE - JDBC メソッドによってスローされた場合
      関連事項:
    • getClobAsString

      @Nullable StringSE getClobAsString(ResultSetSE rs, StringSE columnName) throws SQLExceptionSE
      指定された ResultSet から指定された列を文字列として取得します。データベースとドライバーに応じて、単に ResultSet.getString を呼び出すか、ResultSet.getClob を操作します。
      パラメーター:
      rs - コンテンツを取得する ResultSet
      columnName - 使用する列名
      戻り値:
      文字列としてのコンテンツ、または SQL NULL の場合は null 
      例外:
      SQLExceptionSE - JDBC メソッドによってスローされた場合
      関連事項:
    • getClobAsString

      @Nullable StringSE getClobAsString(ResultSetSE rs, int columnIndex) throws SQLExceptionSE
      指定された ResultSet から指定された列を文字列として取得します。データベースとドライバーに応じて、単に ResultSet.getString を呼び出すか、ResultSet.getClob を操作します。
      パラメーター:
      rs - コンテンツを取得する ResultSet
      columnIndex - 使用する列インデックス
      戻り値:
      文字列としてのコンテンツ、または SQL NULL の場合は null 
      例外:
      SQLExceptionSE - JDBC メソッドによってスローされた場合
      関連事項:
    • getClobAsAsciiStream

      @Nullable InputStreamSE getClobAsAsciiStream(ResultSetSE rs, StringSE columnName) throws SQLExceptionSE
      指定された ResultSet から指定された列を ASCII ストリームとして取得します。データベースとドライバーに応じて、単に ResultSet.getAsciiStream を呼び出すか、ResultSet.getClob を操作します。
      パラメーター:
      rs - コンテンツを取得する ResultSet
      columnName - 使用する列名
      戻り値:
      ASCII ストリームとしてのコンテンツ、または SQL NULL の場合は null 
      例外:
      SQLExceptionSE - JDBC メソッドによってスローされた場合
      関連事項:
    • getClobAsAsciiStream

      @Nullable InputStreamSE getClobAsAsciiStream(ResultSetSE rs, int columnIndex) throws SQLExceptionSE
      指定された ResultSet から指定された列を ASCII ストリームとして取得します。データベースとドライバーに応じて、単に ResultSet.getAsciiStream を呼び出すか、ResultSet.getClob を操作します。
      パラメーター:
      rs - コンテンツを取得する ResultSet
      columnIndex - 使用する列インデックス
      戻り値:
      ASCII ストリームとしてのコンテンツ、または SQL NULL の場合は null 
      例外:
      SQLExceptionSE - JDBC メソッドによってスローされた場合
      関連事項:
    • getClobAsCharacterStream

      ReaderSE getClobAsCharacterStream(ResultSetSE rs, StringSE columnName) throws SQLExceptionSE
      指定された ResultSet から、指定された列を文字ストリームとして取得します。データベースとドライバーに応じて、単に ResultSet.getCharacterStream を呼び出すか、ResultSet.getClob を操作します。
      パラメーター:
      rs - コンテンツを取得する ResultSet
      columnName - 使用する列名
      戻り値:
      文字ストリームとしてのコンテンツ
      例外:
      SQLExceptionSE - JDBC メソッドによってスローされた場合
      関連事項:
    • getClobAsCharacterStream

      ReaderSE getClobAsCharacterStream(ResultSetSE rs, int columnIndex) throws SQLExceptionSE
      指定された ResultSet から、指定された列を文字ストリームとして取得します。データベースとドライバーに応じて、単に ResultSet.getCharacterStream を呼び出すか、ResultSet.getClob を操作します。
      パラメーター:
      rs - コンテンツを取得する ResultSet
      columnIndex - 使用する列インデックス
      戻り値:
      文字ストリームとしてのコンテンツ
      例外:
      SQLExceptionSE - JDBC メソッドによってスローされた場合
      関連事項:
    • getLobCreator

      LobCreator getLobCreator()
      新しい LobCreator インスタンス、つまり BLOB と CLOB を作成するためのセッションを作成します。作成された LOB が不要になった後、通常はステートメントの実行後またはトランザクションの補完後に閉じる必要があります。
      戻り値:
      新しい LobCreator インスタンス
      関連事項: