Altibase에서 LOB 사용하기. Part 2.

이번에는 iBatis를 사용하는 경우 LOB 사용방법이다.

먼저 Altibase의 설정에서 AUTO_COMMIT이 1로 되어 있는지 확인한다.
먼저 Altibase의 설정에서 AUTO_COMMIT이 0으로 되어 있는지 확인한다. 1은 TRUE, 0은 FALSE이다. 0으로 해서 AUTO_COMMIT을 False로 만든다.
config 파일의 위치는 $ALTIBASE_HOME/conf에 있으며 altibase.properties이다. 대략 230라인쯤이다.

iBatis의 SqlMap XML 파일에서 사용하는 resultMap의 Column은 다음과 같이 이용하면 된다.
<resultmap id="someResult" class="test.hops.SomeResult">
     <result property="id" column="ID" columnindex="1"/>
     <result property="blob" column="PHOTO" columnindex="2" jdbcType="BLOB"/>
</resultmap>

쿼리는 일반 SELECT 및 INSERT 쿼리와 동일하게 사용하면 된다.
SELECT 쿼리는 일반 쿼리와 동일하게 사용하면 되고, INSERT는 다음과 같이 사용한다.
insert into som_tbl(id, photo) values (#id#, #blob:BLOB#)
즉, property명:BLOB으로 jdbcType을 주면 된다.

test.hops.SomeResult 클래스에서 BLOB 값을 담을 property는 byte[]로 사용하면 된다.

public class SomeResult {
   private byte[] blob;
   public void setBlob(byte[] blob) ...
   public byte[] getBlob() ...
}

뭔가 내용이 빠졌다. 다시금 해 보니.. 에러가.. 헐...

그리고 Spring Transaction 처리를 해 주면 끝난다. 당연 아는 얘기겠지만,
applicationContext.xml에서 다음을 추가한다.
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"/>
    <bean id="txProxyTemplate" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
        <property name="transactionManager">
            <ref local="transactionManager"></ref>
        </property>
        <property name="transactionAttributes">
            <props>
                <prop key="*">PROPAGATION_REQUIRED, -Exception</prop>
            </props>
        </property>
    </bean>   

그런 후에 Spring Bean(보통 서비스 빈)이 Transaction이 되도록 설정해 준다.
<bean id="service" parent="txProxyTemplate">
        <property name="target">
             <bean class="some.package.SomeServiceImpl">
                  ...

한가지, 고려하고 풀어나갈 문제는 BLOB이나 CLOB의 데이터가 큰 경우 해당 데이터를 메모리로 가지고 있게 된다.
퍼포먼스나 효율적인 메모리 사용을 고려해 볼 때 문제가 된다. iBatis에서 InputStream을 통해서 가지고 올 수 있는 방법이나, 아니면 ResultMap을 짧게 사용하는 방법 등을 생각해 봐야겠다.

Creative Commons License
이 저작물은 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이선스에 따라 이용할 수 있습니다.

이 글과 관련있는 글을 자동검색한 결과입니다 [?]

by hops | 2009/04/14 17:41 | 작업일지 | 트랙백 | 덧글(0)

트랙백 주소 : http://cyberhp.egloos.com/tb/1371786
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

<< 이전 페이지다음 페이지 >>