クラス DefaultLobHandler

java.lang.ObjectSE
org.springframework.jdbc.support.lob.AbstractLobHandler
org.springframework.jdbc.support.lob.DefaultLobHandler
実装されたすべてのインターフェース:
LobHandler

public class DefaultLobHandler extends AbstractLobHandler
LobHandler インターフェースのデフォルト実装。java.sql.ResultSet および java.sql.PreparedStatement が提供するダイレクトアクセサーメソッドを呼び出します。

デフォルトでは、受信ストリームは JDBC ドライバーの PreparedStatementSE 上の適切な setBinary/Ascii/CharacterStream メソッドに渡されます。指定されたコンテンツの長さが負の場合、このハンドラーは長さパラメーターなしで set-stream メソッドの JDBC 4.0 バリアントを使用します。それ以外の場合は、指定された長さをドライバーに渡します。

この LobHandler は、単純な BLOB および CLOB 処理に関する仕様の提案に関して、JDBC に準拠しているすべての JDBC ドライバーで機能するはずです。これは、Oracle 9i のドライバーにはまったく適用されません。Oracle 10g の時点では機能しますが、LOB サイズの制限がある場合があります。古いデータベースサーバーに対して作業する場合でも、最近の Oracle ドライバーの使用を検討してください。推奨事項の完全なセットについては、LobHandler javadoc を参照してください。

一部の JDBC ドライバーでは、BLOB/CLOB ターゲット列を持つ値を、JDBC setBlob / setClob API を介して明示的に設定する必要があります(たとえば、PostgreSQL のドライバー)。このようなドライバーに対して操作する場合は、"wrapAsLob" プロパティを "true" に切り替えます。

JDBC 4.0 では、この LobHandler は、ストリーム引数を直接取る setBlob / setClob バリアントを介した BLOB/CLOB コンテンツのストリーミングもサポートします。完全に準拠した JDBC 4.0 ドライバーに対して操作する場合は、"streamAsLob" プロパティを "true" に切り替えることを検討してください。

最後に、この LobHandler は一時的な BLOB/CLOB オブジェクトの作成もサポートしています。"streamAsLob" が LOB サイズの制限に達した場合は、"createTemporaryLob" プロパティを "true" に切り替えることを検討してください。

推奨事項の概要については、LobHandler インターフェースの javadoc を参照してください。

導入:
04.12.2003
作成者:
Juergen Hoeller
関連事項:
  • ネストされたクラスのサマリー

    ネストされたクラス
    修飾子と型
    クラス
    説明
    protected class
    内部クラスとしてのデフォルトの LobCreator 実装。
  • フィールドサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    protected final Log
  • コンストラクターのサマリー

    コンストラクター
    コンストラクター
    説明
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    getBlobAsBinaryStream(ResultSetSE rs, int columnIndex)
    指定された ResultSet から、指定された列をバイナリストリームとして取得します。
    byte[]
    getBlobAsBytes(ResultSetSE rs, int columnIndex)
    指定された ResultSet から指定された列をバイトとして取得します。
    getClobAsAsciiStream(ResultSetSE rs, int columnIndex)
    指定された ResultSet から指定された列を ASCII ストリームとして取得します。
    指定された ResultSet から、指定された列を文字ストリームとして取得します。
    getClobAsString(ResultSetSE rs, int columnIndex)
    指定された ResultSet から指定された列を文字列として取得します。
    新しい LobCreator インスタンスを作成します。
    void
    setCreateTemporaryLob(boolean createTemporaryLob)
    バイト配列 / 文字列を、JDBC 4.0 createBlob / createClob メソッドを介して作成された一時的な JDBCBlob/Clob オブジェクトにコピーするかどうかを指定します。
    void
    setStreamAsLob(boolean streamAsLob)
    ストリーム引数を指定した JDBC 4.0 setBlob / setClob メソッドを使用して、バイナリストリーム / 文字ストリームを明示的な LOB コンテンツとして JDBC ドライバーに送信するかどうかを指定します。
    void
    setWrapAsLob(boolean wrapAsLob)
    Blob/Clob 引数を指定した JDBC setBlob / setClob メソッドを使用して、JDBC Blob/Clob オブジェクトにラップされた JDBC ドライバーにバイト配列 / 文字列を送信するかどうかを指定します。

    クラス org.springframework.jdbc.support.lob.AbstractLobHandler から継承されたメソッド

    getBlobAsBinaryStream, getBlobAsBytes, getClobAsAsciiStream, getClobAsCharacterStream, getClobAsString

    クラス java.lang.ObjectSE から継承されたメソッド

    clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE
  • フィールドの詳細

    • logger

      protected final Log logger
  • コンストラクターの詳細

    • DefaultLobHandler

      public DefaultLobHandler()
  • メソッドの詳細

    • setWrapAsLob

      public void setWrapAsLob(boolean wrapAsLob)
      Blob/Clob 引数を指定した JDBC setBlob / setClob メソッドを使用して、JDBC Blob/Clob オブジェクトにラップされた JDBC ドライバーにバイト配列 / 文字列を送信するかどうかを指定します。

      デフォルトは "false" で、コンテンツの設定に一般的な JDBC 2.0 setBinaryStream / setCharacterStream メソッドを使用します。このような折り返しが必要であることがわかっている JDBC ドライバーに対する明示的な Blob/Clob 折り返しの場合はこれを "true" に切り替えます(たとえば、OID 列にアクセスするための PostgreSQL であるのに対し、BYTEA 列には標準的な方法でアクセスする必要があります)。

      この設定は、バイト配列 / 文字列引数とストリーム引数に影響します。ただし、"streamAsLob" がこの処理をオーバーライドして JDBC 4.0 の新しい明示的なストリーミングサポート(使用可能な場合)を使用する場合を除きます。

      関連事項:
    • setStreamAsLob

      public void setStreamAsLob(boolean streamAsLob)
      ストリーム引数を指定した JDBC 4.0 setBlob / setClob メソッドを使用して、バイナリストリーム / 文字ストリームを明示的な LOB コンテンツとして JDBC ドライバーに送信するかどうかを指定します。

      デフォルトは "false" で、コンテンツの設定に一般的な JDBC 2.0 setBinaryStream / setCharacterStream メソッドを使用します。JDBC ドライバーが実際にこれらの JDBC 4.0 操作(Derby など)をサポートしている場合は、明示的な JDBC4.0 ストリーミングの場合はこれを "true" に切り替えます。

      この設定は、JDBC 4.0 サポートを必要とするバイト引数 / 文字列引数だけでなく、ストリーム引数にも影響します。JDBC 3.0 に対する LOB コンテンツのサポートについては、"wrapAsLob" 設定を確認してください。

      関連事項:
    • setCreateTemporaryLob

      public void setCreateTemporaryLob(boolean createTemporaryLob)
      バイト配列 / 文字列を、JDBC 4.0 createBlob / createClob メソッドを介して作成された一時的な JDBCBlob/Clob オブジェクトにコピーするかどうかを指定します。

      デフォルトは "false" で、コンテンツの設定に一般的な JDBC 2.0 setBinaryStream / setCharacterStream メソッドを使用します。JDBC 4.0 を使用して明示的な Blob/Clob を作成するには、これを "true" に切り替えます。

      この設定は、JDBC 4.0 サポートを必要とするバイト引数 / 文字列引数だけでなく、ストリーム引数にも影響します。JDBC 3.0 に対する LOB コンテンツのサポートについては、"wrapAsLob" 設定を確認してください。

      関連事項:
    • getBlobAsBytes

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

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

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

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

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

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