Java/Spring
Spring + Mybatis에서 트랜젝션(Transaction) 처리
조영래
2021. 12. 6. 15:55
전체 설정은 생략하고 사용하는 부분만 적어 놓았다
1. XML로 Bean을 정의하자
- 기본적으로 DataSource 와 SqlSessionFactoryBean 와 Mapper의 Bean은 정의해야 한다
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<constructor-arg ref="dataSource" />
</bean>
2. Controller 또는 Service 에서 사용하는 실행 구문이다
- 멤버 변수로 @Autowired로 DataSourceTransactionManager를 선언해야 한다
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
TransactionStatus status = transactionManager.getTransaction(def);
try {
mapper.InsertTest();
mapper.UpdateTest();
transactionManager.commit(status);
}
catch (Exception e) {
transactionManager.rollback(status);
throw e;
}