어벙이가 하루 고생하여 Insert시 CLOB 처리를 완결하다..ㅋㅋㅋ
두가지 방법이 있는데....두가지 모두 되는데요...bean 설정이 어려운분은 2번 권장.
1. applicationContext-xxx.xml 에서 bean 생성 방법
1.applicatonContext-jdbc.xml bean 선언예제
<bean id="nativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor" lazy-init="true"/>
<bean id="oracleLobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler" lazy-init="true">
<property name="nativeJdbcExtractor">
<ref local="nativeJdbcExtractor"/>
</property>
</bean>
2.applicatonContext-law.xml bean 선언예제
<bean id="lawServiceTarget" class="kr.go.ccourt.xmlmng.law.service.LawServiceImpl">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="lawDAO">
<ref local="lawDAO" />
</property>
<property name="oracleLobHandler">
<ref bean="oracleLobHandler" />
</property>
</bean>
3.LawServiceImpl setter injection 선언 예제
public void setOracleLobHandler(OracleLobHandler pm_oOracleLobHandler) {
this.im_oOracleLobHandler = pm_oOracleLobHandler;
}
4.LawServiceImpl addLaw 메소드 예제
public int addLaw(Law pm_oLaw) throws ExistedLawException {
..생략
im_oLawDAO.setOracleLobHandler(im_oOracleLobHandler);
lm_iResult = im_oLawDAO.insert(pm_oLaw);
..생략
}
5.LawDAOImpl setOracleLobHandler 메소드 예제, LawDAO interface에서 당근 선언해야겠죠..ㅋㅋ
public void setOracleLobHandler(OracleLobHandler pm_oOracleLobHandler) {
this.im_oOracleLobHandler = pm_oOracleLobHandler;
}
2. xxxxDAOImpl 에서 직접 생성
public class LawDAOImpl extends MyJdbcDaoSupport implements LawDAO {
private OracleLobHandler im_oOracleLobHandler = null;
public int insert(Law pm_oLaw) throws DataAccessException {
int lm_iResult = 0;
String sql = getMessageSourceAccessor().getMessage("law.insert.add");
im_oOracleLobHandler = new OracleLobHandler();
im_oOracleLobHandler.setNativeJdbcExtractor(new SimpleNativeJdbcExtractor());
Object[] values = {
pm_oLaw.getLawName(), pm_oLaw.getLawCourtDay(), pm_oLaw.getLawNum(), pm_oLaw.getLawJurisdition(),
pm_oLaw.getLawType(), pm_oLaw.getLawInfo(), new SqlLobValue(pm_oLaw.getLawContent(), im_oOracleLobHandler),
pm_oLaw.getSrcType(), pm_oLaw.getInfoType(), pm_oLaw.getSearchKeyword() };
int [] argTypes = new int [] {
java.sql.Types.VARCHAR, java.sql.Types.VARCHAR, java.sql.Types.VARCHAR, java.sql.Types.VARCHAR,
java.sql.Types.VARCHAR, java.sql.Types.VARCHAR, java.sql.Types.CLOB,
java.sql.Types.VARCHAR, java.sql.Types.VARCHAR, java.sql.Types.VARCHAR};
lm_iResult = getJdbcTemplate().update(sql, values, argTypes);
return lm_iResult;
}
}
[출처] SPRING CLOB 처리 예제|작성자 어벙
SSISO Community