[http://cafe.naver.com/deve/1046]

[{Java2HtmlPlugin

public class OracleCLOBTypeHandler implements TypeHandlerCallback {

    public void setParameter(ParameterSetter setter, Object param) throws SQLException {

        try {
            setter.setClob((Clob) param);
        } catch (SQLException e) {
            if (log.isErrorEnabled())
                log.error("Failed to set CLOB parameter");
            throw e;
        }
    }


    public Object getResult(ResultGetter getter) throws SQLException {

        Clob clob = null;
        try {
            clob = getter.getClob();
        } catch (SQLException e) {
            if (log.isErrorEnabled())
                log.error("Failed to set CLOB result property");
            throw e;
        }

        return clob;
    }

    public Object valueOf(String arg0) {

        return arg0;
    }

}
}]
 

====> SQLMap (essay 빈의 content 속성이 CLOB 타입으로 정하고...)

[{Java2HtmlPlugin 

<resultMap id="xmlRslt" class="essay">
    <result property="content" column="content" typeHandler="OracleCLOBTypeHandler"/>
</resultMap>

<statement id="getXMLData" resultMap="xmlRslt">
    select content from essay
</statement>
}]
 

====> CLOB의 데이터를 문자열로 변환하는 메소드.

[{Java2HtmlPlugin 

public static String getStringForCLOB(CLOB clob) {
        String str = "";
        StringBuffer sbf = new StringBuffer();
        Reader br = null;
        char[] buf = new char[1024];
        int readcnt;

        try {
            br = clob.getCharacterStream(0L);

            while ((readcnt=br.read(buf,0,1024))!=-1) {
                sbf.append(buf,0,readcnt);
            }

        } catch (Exception e) {
            if (log.isErrorEnabled())
                 log.error("Failed to create String object from CLOB", e);

        }finally{
            if(br!=null)
                try {
                    br.close();
                } catch (IOException e) {
                    if (log.isErrorEnabled())
                        log.error("Failed to close BufferedReader object", e);

               }
        }
        return sbf.toString();
    } 

}]