|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.ObjectAbstractLobTypeHandler
jp.terasoluna.fw.orm.ibatis.support.ClobReaderTypeHandler
public class ClobReaderTypeHandler
iBATISから利用されるCLOBと文字ストリームをマッピングする実装のiBATISのタイプハンドラ。
OracleのCLOB型を文字ストリームで扱う場合は本APIを使用する。(※本クラスはPostgreSQLでは利用できない)
CLOB列をバイト配列として扱う場合、本クラスを利用する必要はない。
バイト配列として扱うと、
CLOB列で扱うデータが巨大でメモリエラーが発生したり、
性能要件が満たせない場合のみ、本クラスを利用すること。
本クラスを利用するためにはOracleLobHandlerのBean定義とsqlMapClientFactoryBeanへの設定を行うこと。
また、OracleLobHandlerにはNativeJdbcExtractorを設定すること。
なお、SpringがOracleLobHandlerといくつかのNativeJdbcExtractorを提供している。
Springが提供しているNativeJdbcExtractorの一つにSimpleNativeJdbcExtractorがある。
SimpleNativeJdbcExtractorは各APサーバからnativeデータソースを取得し、OracleLobHandlerに設定する。
ただし、SimpleNativeJdbcExtractorを利用してもTomcat以外のAPサーバではnativeデータソースを取得できない場合がある。
その場合、Springが提供している他のNativeJdbcExtractorをするか、各APサーバ用に新たにNativeJdbcExtractorを作成する必要がある。
例としてAPサーバがWebLogicの場合、Springが提供しているWebLogicJdbcExtractorを利用すること。
【Bean定義ファイル
の設定例】
<!-- LOBフィールドを扱うためのハンドラ -->
<bean id="oracleLobHandler"
class="org.springframework.jdbc.support.lob.OracleLobHandler">
<property name="nativeJdbcExtractor" ref="simpleExtractor"/>
</bean>
<!-- iBATIS データベース層のためのSQlMapの設定 -->
<bean id="sqlMapClient"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="WEB-INF/sql-map-config.xml"/>
<property name="dataSource" ref="dataSource"/>
<property name="lobHandler" ref="oracleLobHandler"/>
</bean>
<!-- simpleExtractorのBean定義設定 -->
<!-- ※ OC4JのJNDIからデータソースを取得する場合は、プロパティはすべてtrueにしておくこと。 -->
<bean id="simpleExtractor"
class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor">
<property name="nativeConnectionNecessaryForNativeStatements" value="true"/>
<property name="nativeConnectionNecessaryForNativePreparedStatements" value="true"/>
<property name="nativeConnectionNecessaryForNativeCallableStatements" value="true"/>
</bean>
本クラスを利用したiBATIS設定ファイルの記述方法を以下に示す。
【CLOB_TESTテーブル定義】
列名 | 型 | 制約 |
---|---|---|
PK | INTEGER | NOT NULL |
MAP | CLOB | NOT NULL |
【iBATIS設定ファイル
の設定例】
<!? update文の設定 -->
<parameterMap id="clobParam" class="java.util.Map">
<parameter property="pk"/>
<parameter property="map"
typeHandler="jp.terasoluna.fw.orm.ibatis.support.ClobReaderTypeHandler"/>
</parameterMap>
<insert id="insertCLobTest" parameterMap="clobParam">
INSERT INTO CLOB_TEST (PK, MAP) VALUES (?, ?)
</insert>
<!? select文の設定 -->
<resultMap id="clobResult" class="java.util.HashMap">
<result property="pk"/>
<result property="map"
typeHandler="jp.terasoluna.fw.orm.ibatis.support.ClobReaderTypeHandler"/>
</resultMap>
<select id="selectCLobTest" resultMap="clobResult">
SELECT PK, MAP FROM CLOB_TEST
</select>
コンストラクタの概要 | |
---|---|
|
ClobReaderTypeHandler()
コンストラクタ。 |
protected |
ClobReaderTypeHandler(LobHandler lobHandler)
コンストラクタ。 |
メソッドの概要 | |
---|---|
protected java.lang.Object |
getResultInternal(java.sql.ResultSet rs,
int index,
LobHandler lobHandler)
結果を取得する。 |
protected void |
setParameterInternal(java.sql.PreparedStatement ps,
int index,
java.lang.Object value,
java.lang.String jdbcType,
LobCreator lobCreator)
パラメータを設定する。 |
java.lang.Object |
valueOf(java.lang.String s)
文字列を本Handlerが扱う型に変換する。 |
クラス java.lang.Object から継承されたメソッド |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
コンストラクタの詳細 |
---|
public ClobReaderTypeHandler()
protected ClobReaderTypeHandler(LobHandler lobHandler)
lobHandler
- LobHandlerメソッドの詳細 |
---|
protected void setParameterInternal(java.sql.PreparedStatement ps, int index, java.lang.Object value, java.lang.String jdbcType, LobCreator lobCreator) throws java.sql.SQLException
ps
- セット先のPreparedStatementindex
- パラメータのインデックスvalue
- セットするパラメータjdbcType
- パラメータのJDBC型lobCreator
- 利用するLobCreator
java.sql.SQLException
- SQL例外protected java.lang.Object getResultInternal(java.sql.ResultSet rs, int index, LobHandler lobHandler) throws java.sql.SQLException
rs
- 取得元のResultSetindex
- ResultSetのインデックスlobHandler
- 利用するLobHandler
java.sql.SQLException
- SQL例外public java.lang.Object valueOf(java.lang.String s)
s
- 文字列
|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |