MyBatis 모듈 구성요소
MyBatis configuration file
- MyBatis의 작업 설정을 설명해주는 xml파일이다.
- 데이터베이스의 연결 대상, 매핑 파일의 경로 등과 같은 세부 사항을 설명하는 파일
SqlSessionFactoryBuilder
- Configuration file을 읽고, 생성하는
SqlSessionFactory
구성요소
SqlSessionFactory
- SqlSession을 생성하는 구성요소
SqlSession
SQL 실행 및 트랜잭션 제어를 위한 API를 제공
하는 구성요소- 데이터베이스에 액세스할 떄 가장 중요한 역할을 하는 구성요소
MyBatis 프로세스 흐름
프로그램 초기화 프로세스 흐름
- SqlSessionFactoryBuilder에 대한 SqlSessionFactory 빌드를 요청
- SqlSessionFactory 생성을 위해서 MyBatis구성 파일을 읽음
MyBatis 구성 파일 설정 기반으로 SqlSessionFactory를 생성
클라이언트 요청에 따른 프로세스 흐름
- 클라이언트가 프로그램에 대한 요청
- 응용 프로그램은
SqlSessionFactory
에서SqlSession
객체를 가져온다. SqlSessionFactory
는SqlSession
을 생성하여 이를 애플리케이션으로 리턴해준다.SqlSession
에서Mapper
인터페이스의 구현 객체를 가져온다.- Mapper 인터페이스 메서드를 호출
- 메서드에 해당하는 SQL을 실행
MyBatis-Spring 구성요소
SqlSessionFactoryBean
- MyBatis 구성파일에 있는 정보를 기반으로 SqlSessionFactory Spring DI 컨테이너에 객체를 빌드하고 저장하는 컴포넌트
- MyBatis 구성파일이 없어도 SqlSessionFactory를 빌드가능하게 해준다.
MapperFactoryBean
- Singleton Mapper 객체를 빌드하고 Spring DI 컨테이너에 객체를 저장하는 컴포넌트
SqlSessionTemplate
- SqlSession 인터페이스를 구현하는 싱글톤 구성요소
MyBatis-Spring 프로세스 흐름
프로그램 초기화 프로세스 흐름
SqlSessionFactoryBean
이SqlSessionFactory
를 빌드- 응용프로그램은
SqlSessionFactoryBuilder
를 사용하여 빌드된SqlSessionFactory
에서SqlSession
을 가져옴 SqlSessionFactoryBuilder
는 MyBatis구성 파일에 따라서SqlSessionFactory
를 생성
→SqlSessionFactory
는Spring DI 컨테이너
에 의해 저장- MapperFactoryBean은
SqlSession(SqlSessionTemplate)
및 Mapper객체를 생성.
클라이언트 요청에 따른 프로세스 흐름
- 클라이언트가 프로그램에 대한 프로세스 요청
- 애플리케이션은 DI컨테이너에 의해 주입된
Mapeer Interface
구현체의 메서드를 호출 - Mapper 객체는 호출된 메서드에 해당하는
SqlSession(SqlSessionTemplate)
메서드를 호출 - SqlSession은 트랜잭션에 할당 된 MyBatis 표준
SqlSession
을 사용, 트랜잭션에 할당 된 SqlSession이 없으면 표준 SqlSessionFactory 메소드가 호출 - 동일한 트랜잭션에 있으면 새 트랜잭션을 만들지 않고 동일한 SqlSession이 사용된다.
- SqlSession은 매핑 파일에서 실행할 SQL을 가져와서 SQL을 실행
참고
반응형