가넷sw
110
2019-08-13 17:14:39 작성 2019-08-13 17:21:59 수정됨
0
143

Spring @Transactional을 적용하여 rollback 동작이 안됩니다.



@Transactional(propagation = Propagation.REQUIRED, rollbackFor = { Exception.class })
@Override
public void insertImg(ImgVO vo, MultipartHttpServletRequest request) throws Exception {		
	// TODO Auto-generated method stub				
			
	...
	
	imgDao.insertImg(vo);
	vo.setTitle("");//에러발생 유도(필수값 입력 하지 않음)
	imgDao.insertImg(vo);
						
        ...
}

ServiceImpl

@Transactional(propagation = Propagation.REQUIRED, rollbackFor = { Exception.class })
@Override
public void insertImg(ImgVO vo, MultipartHttpServletRequest request) throws Exception {		
	// TODO Auto-generated method stub				
			
	...
	
	imgDao.insertImg(vo);
	vo.setTitle("");//에러발생 유도(필수값 입력 하지 않음)
	imgDao.insertImg(vo);
						
}


context-datasource.xml

<!-- oracle Datasource -->
	<bean id="dataSource_oracle" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${jdbc.oracle.driver}"/>
        <property name="url" value="${jdbc.oracle.url}"/>
        <property name="username" value="${jdbc.oracle.username}"/>
        <property name="password" value="${jdbc.oracle.password}"/>
    </bean>

    <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource_oracle"/>
	</bean>


안녕하세요.

Spring @Transactional 어노테이션을 써서 Rollback을 진행하고자 하는데 잘 안되고 있어서 문의를 드립니다.


2건의 insert문이 있다고 가정했을 때

첫번째 건은 성공, 두번째 건은 실패하였다면 2건 모두 rollback되어야 하는데 위의 코드로는 진행되지 않아 문의 드립니다.


잘못된 점이 있으면 말씀해주시면 감사드리겠습니다.

0
0
  • 답변 0

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