예외: TransientDataAccessResourseException
게시판 프로젝트에 트랜잭션을 추가하려고 서비스에 있는 메소드에 다음과 같은 코드를 추가함.
@Transactional(propagation =Propagation.REQUIRED, rollbackFor=Exception.class)
public List<ReplyVo> write(ReplyVo rvo) throws Exception {
mapper.createReply(rvo);
bbsService.repCountPlus(Integer.toString(rvo.getBno()));
return mapper.replyList(Integer.toString(rvo.getBno()));
}
그랬더니 다음과 같은 에러가 나옴.
과거의 예제를 찾아 살펴본 결과 root-context의 sqlSessionFactory 부분이 잘못돼있는 것 같음.
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="transactionFactory">
<bean
class="org.apache.ibatis.transaction.managed.ManagedTransactionFactory" />
</property>
</bean>
다음과 같이 transactionFactory property부분을 주석처리 해주니 트랜젝션이 적용됨.
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- <property name="transactionFactory">
<bean
class="org.apache.ibatis.transaction.managed.ManagedTransactionFactory" />
</property> -->
</bean>