MyBatis-Spring

SEAN·2025년 4월 17일

🔗 MyBatis-Spring이란?

✔ 목적

  • MyBatis를 Spring 환경에 통합
  • 트랜잭션 연동을 쉽게 처리
  • SqlSession 관리 자동화
  • MyBatis 예외를 Spring의 DataAccessException으로 변환

⚙️ 주요 구성 요소

구성 요소설명
SqlSessionFactoryBeanSpring에서 SqlSessionFactory를 생성해주는 Bean
SqlSessionTemplateMyBatis의 SqlSession을 구현한 핵심 클래스. 내부적으로 트랜잭션, 예외 처리, 리소스 해제 등을 자동 처리함
MapperScannerConfigurer (또는 @MapperScan)Mapper 인터페이스를 자동으로 스프링 빈으로 등록해줌

🧱 설정 구조 예시 (Java Config)

@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 계열로 통합
profile
성장하는 BE 개발자 입니다.

0개의 댓글