1. mybatis 트랜잭션 설정 확인
- @EnableTransactionManager 어노테이션 적용
- PlatformTransactionManager 이 Bean으로 등록되어 있는지 확인
@Configuration
@EnableTransactionManagement
public class DBConfig {
@Autowired
private Environment env;
@Bean
public DataSource dataSource() {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName"));
dataSource.setUrl(env.getProperty("jdbc.url"));
dataSource.setUsername(env.getProperty("jdbc.username"));
dataSource.setPassword(env.getProperty("jdbc.password"));
dataSource.setInitialSize(env.getProperty("jdbc.initialSize", Integer.class)); //
dataSource.setMaxActive(env.getProperty("jdbc.maxActive", Integer.class));
return dataSource;
}
@Bean
public PlatformTransactionManager transactionManager(DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
}
2. 서비스단에 @Transactional 을 잘걸었는지 확인 (import는 org.springframework...)
@Transactional
@Override
public HashMap<String, Object> selectGridCenter(ReqModel param) throws Exception{
sqlSession.getMapper(Mapper.class).insetTest(param);
sqlSession.getMapper(Mapper.class).insetTest2(param);
return null;
}
3. 모든 에러에 대해 트랜잭션을 적용하고 싶을 경우 rollbackFor 를 사용
@Override
@Transactional(rollbackFor = {Exception.class})
public HashMap<String, Object> selectGridCenter(ReqModel param) throws Exception{
sqlSession.getMapper(Mapper.class).insetTest(param);
sqlSession.getMapper(Mapper.class).insetTest(param);
return mapData;
}
Error
- LinkageError
- VirtualMachineError
Exception
- RuntimeException
- IOException
- AWTException
- SQLException