Struts2.0 (struts2 hibernate spring) 파일 업로드blob

최근 프로젝트에서struts2를 처음 사용했는데 데이터베이스(oracle9i)에 파일을 업로드할 때 이상한 문제가 생겼어요. 업로드한 파일이에요.
비교 시간(이렇게 말하면 관련 문서를 열람하지 않았고 이 값이 얼마인지 테스트하지 않았기 때문에) 정상적으로 데이터베이스에 올릴 수 있지만 300여 K의 그림을 올렸을 때 다음과 같은 오류가 발생했다.
    
허용되지 않는 작업:streams type cannot be used in batching
인터넷에서 검색했을 때 어떤 형이 다음과 같은 설명을 했다.
    
인용하다
최근 프로그램의 데이터베이스가oracle로 변경되었습니다. blob 형식 타임즈에서 다음 오류가 발생했습니다. 허용되지 않는 동작:streams type cannot be used in batching.다방면의 자료를 찾아서 Oracle JDBC는 흐르는 동작을 대량으로 실행할 수 없음을 증명했다. (Oracle CLOB는 흐르는 메커니즘을 데이터 읽기와 쓰기 방식으로 사용한다.)스프링 프로필에서hibernate jdbc만 변경하면 됩니다.batch_크기가 0이면 됩니다.
    
<bean id="oracleSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">   
        <property name="dataSource">   
            <ref bean="oracleDataSource"/>   
        </property>   
        <property name="hibernateProperties">   
            <props>   
                <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>   
                <prop key="connection.provider_class">   
                    org.hibernate.connection.C3P0ConnectionProvider   
                </prop>   
                <prop key="hibernate.show_sql">true</prop>   
                <prop key="hibernate.cache.use_query_cache">true</prop>   
                <prop key="hibernate.cache.provider_class">   
                    org.hibernate.cache.EhCacheProvider   
                </prop>   
                <prop key="hibernate.jdbc.batch_size">0</prop>   
            </props>   
        </property>  

위의 참조 출처:http://hsyd.iteye.com/blog/320579
내가 추가한 후에 또 새로운 문제가 생겼다.
      org.springframework.transaction.TransactionSystemException: Could not roll back Hibernate transaction; nested exception is org.hibernate.TransactionException: JDBC rollback failed
너무 답답해요. 인터넷에서 많이 찾아봤는데 대부분이 save의 빈값을 먼저 내고 업데이트를 해야 한다고 했어요. 제가 한번 해 봤는데 ssh 구조에서 실현하기 어려울 것 같아서 문제를 해결하지 못했어요. 제 공력이 부족할 것 같아요. 허허. 그런데 인터넷에서 봤어요.
    
인용하다
oracle10G 테이프의 jdbcdriver로 clob에서 직접 읽을 수 있습니다
그래서 만약에 제가oracle10G가 가지고 있는 jdbcdriver를 사용한다면 블로브 타입을 직접 읽을 수 있지 않을까요?한번 해봤는데 미친 듯이 기뻐했어요...드디어 해결됐으니 곤혹스러워하는 동업자들에게 나눠드리겠습니다.
참고로 제가 예전에 사용했던oracle 드라이브는class12입니다.jar, 인터넷에서 10g의 드라이브를 내렸습니다. 이름은 ojdbc14입니다.jar, 현재 첨부 파일로 다운로드를 편리하게 제공합니다.

좋은 웹페이지 즐겨찾기