토끼냥
59
2020-03-18 14:35:11 작성 2020-03-18 14:35:52 수정됨
0
151

mybatis transaction executorType질문드립니다.


대용량 엑셀 업로드하려고 기능 구현 중인데 getBatchSqlSession 메소드를 이용해서 

배치로 insert하고 있습니다.


<AAAserviceImpl>

public SqlSession getBatchSqlSession() {
        return sqlSessionTemplate;
        //return sqlSessionTemplate;            // SqlSessionTemplate Bean을 사용한다.
    }

public String insertExcelFile(File excelFile) throws Exception {

try{

DTO에 엑셀값 넣기........

getBatchSqlSession().insert("insert쿼리문id", DTO);
getBatchSqlSession().flushStatements();
} catch(Exception e){
e.printStackTrace();

}
return rtnString;
}


맨 처음 만든 기능은 잘 수행되는데 동일한 메소드를 다른 <BBBServiceImpl> 에 만들고 수행하려고 하면

Cannot change the ExecutorType when there is an existing transaction

에러가 발생합니다.

ExecutorType이 simple인데 BATCH로 돌리려니 에러가 나는거라고 하는데요..

여기서부터 해결을 못 하겠습니다.ㅜㅜ 


일단 트랜잭션 설정은 다음과 같습니다..

<context-transaction.xml>

<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"/>
	</bean>

	<tx:advice id="txAdvice" transaction-manager="txManager">
		<tx:attributes>
			<tx:method name="*" rollback-for="Exception"/>
		</tx:attributes>
	</tx:advice>

	<aop:config>
		<aop:pointcut id="requiredTx" expression="execution(* com.taxi..impl.*Impl.*(..))"/>
		<aop:advisor advice-ref="txAdvice" pointcut-ref="requiredTx" />
	</aop:config>

<context-mapper.xml>

<bean id="sqlSessionTemplate" name="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
		<constructor-arg index="0" ref="sqlSession" />
		<constructor-arg index="1" value="BATCH" />
</bean>


ExecutorType 어떻게 하면 될까요? ㅜㅜ mapper 설정만 보면 BATCH로 설정하는 것 같은데 말이죠 ㅜㅜ

0
0
  • 답변 0

  • 로그인을 하시면 답변을 등록할 수 있습니다.