낭만 프로그래머

Spring + Mybatis에서 트랜젝션(Transaction) 처리 본문

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;
}