Mybatis 의 동작원리

Ahri·2022년 5월 8일
0

Mybatis3 를 참고하여 정리하였습니다. 더 자세한 내용은 해당 내용을 확인하세요.

Mybatis 구성 요소 및 관련 파일

MyBatis configuration file
데이터베이스의 연결 대상, 매핑 파일의 경로, 마이바티스의 동작 설정 등을 자세하게 설명하는 파일

org.apache.ibatis.session. SqlSessionFactoryBuilder
마이바티스환경 설정 파일 읽고 SqlSessionFactory 생성

org.apache.ibatis.session. SqlSessionFactory
SqlSession 생성하기 위한 요소

org.apache.ibatis.session. SqlSession
SQL 실행 및 트랜잭션 제어를 위한 API를 제공하는 컴포넌트

Mapper interface
매핑 파일에 정의된 SQL 함수를 호출하는 인터페이스

Mapping file
실행할 SQL 문이 있는 파일

애플리케이션 시작시

(1) SqlSessionFactoryBuilder에 SqlSessionFactory 빌드하도록 요청

(2) SqlSessionFactoryBuilder는 SqlSessionFactory를 생성하기 위한 MyBatis 구성 파일을 읽음

(3) SqlSessionFactoryBuilder는 MyBatis 구성 파일의 정의를 기반으로 SqlSessionFactory를 생성

클라이언트 요청에 의해 수행

(4) 클라이언트가 애플리케이션에 대한 프로세스 요청

(5) 애플리케이션은 (SqlSessionFactoryBuilder를 사용하여 빌드된) SqlSessionFactory에서 SqlSession을 가져옴

(6) SqlSessionFactory는 SqlSession을 생성하고 이를 애플리케이션에 반환

(7) 애플리케이션은 SqlSession 에서 Mapper 인터페이스의 구현 개체를 가져옴

(8) 애플리케이션은 Mapper 인터페이스 메서드를 호출 (“Mapper interface mechanism” → Mapper interface 메커니즘에 대해 자세히 알고싶다면 여기로...)

(9) Mapper 인터페이스의 구현 객체는 SqlSession 메서드를 호출하고 SQL 실행을 요청

(10) SqlSession은 매핑 파일에서 실행할 SQL 가져와 실행

Mybatis SQL 실행 예제

@Mapper
public interface TestMapper {
    List<String> findNameById(String id);
}
<mapper namespace="~~(생략).TestMapper">
    <select id="findNameById"
            parameterType="String"
            resultType="String">
        select name from test where id = #{id}
    </select>
</mapper>

0개의 댓글