DataAccessException으로 변환| 구성 요소 | 설명 |
|---|---|
SqlSessionFactoryBean | Spring에서 SqlSessionFactory를 생성해주는 Bean |
SqlSessionTemplate | MyBatis의 SqlSession을 구현한 핵심 클래스. 내부적으로 트랜잭션, 예외 처리, 리소스 해제 등을 자동 처리함 |
MapperScannerConfigurer (또는 @MapperScan) | Mapper 인터페이스를 자동으로 스프링 빈으로 등록해줌 |
@Configuration
@MapperScan("com.example.mapper")
public class MyBatisConfig {
@Bean
public DataSource dataSource() {
return new DriverManagerDataSource(...); // DB 설정
}
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource());
return factoryBean.getObject();
}
@Bean
public SqlSessionTemplate sqlSessionTemplate() throws Exception {
return new SqlSessionTemplate(sqlSessionFactory());
}
}
SqlSession 생성/닫기 수동 처리 X → SqlSessionTemplate이 관리
트랜잭션 자동 연동 (@Transactional)
Mapper 인터페이스를 자동 스캔하여 DI 적용 가능
예외를 일관된 Spring 예외로 처리 → 예외 처리 일관성 확보
| 항목 | MyBatis 단독 | MyBatis-Spring 연동 |
|---|---|---|
| 트랜잭션 관리 | 직접 제어 | @Transactional 사용 |
| SqlSession | 수동 생성/닫기 | 자동 처리 (SqlSessionTemplate) |
| Mapper 등록 | XML 수동 등록 | 자동 스캔 가능 (@MapperScan) |
| 예외 처리 | IOException, SQLException 등 | DataAccessException 계열로 통합 |