MyBatis와 MyBatis-Spring 구조
개요
- 스프링부트, 마이바티스, H2 DB 를 이용한다.
구조
전체 Application 흐름
MyBatis 구조
MyBatis Config 파일
- DB 주소, Mapping 파일(SQL파일) 경로 설정 파일이다.
Mapping 파일
- SQL 문, OR Mapping 설정 파일이다.
SqlSessionFactoryBuilder
MyBatis Config 파일
(설정파일)을 바탕으로 SqlSessionFactory
을 생성한다.
SqlSessionFactory
SqlSession
- 핵심 역할을 수행한다.
- SQL 실행, 트랜잭션 관리 등을 수행한다.
- Thread-Unsafe
- 쓰레드마다 생성된다.
MyBatis-Spring 구조
SqlSessionFactoryBean
- 개발자가 직접 Spring Bean으로 등록해야한다.
MyBatisConfig 파일
을 기반으로 SqlSessionFactory
를 생성한다.
MyBatisConfig 파일
SpringBean 설정 파일
- DB 접속 정보, Mapping 파일의 경로를 설정한다.
Mapping 파일
- SQL 문, OR Mapping 을 설정한다.
SqlSessionTemplate
- 핵심 역할을 담당한다.
- SQL 실행, 트랜잭션 관리 등을 수행한다.
SqlSession 인터페이스
의 구현체이다.
- Thread-safe
MyBatis-Spring-Boot-Starter 효과
- 스프링 부트에 MyBatis를 편리하고 빠르게 적용할 수 있다.
@Mapper
생성외의 다른 필수 설정 작업들을 자동으로 수행해준다.
- 즉, MyBatis를 사용하기 위해 수행해야했던 갖가지 설정을 할 필요가 없어서 사용하기 편리하다.
- MyBatis-Spring-Boot-Starter 가 수행하는 작업
DataSource
자동 감지
SqlSessionFactory
를 전달하는 인스턴스를 자동으로 생성하고 등록한다.
SqlSessionFactoryBean
의 인스턴스를 만들고 등록한다.
@Mapper
주석이 표시된 매퍼를 자동으로 스캔하고 연결한다.
SqlSessionTemplateSpring
컨텍스트에 등록하여 Spring Bean에 주입 할 수 있도록 한다.
참고 자료: https://kils-log-of-develop.tistory.com/576