티스토리 뷰

Web/BackEnd

Mybatis란?

Codecheck 2024. 1. 2. 12:21

 

JDBC프로그래밍을 좀 더 쉽게 하기 위해 제작된 프레임워크로 XML 설명자나 주석을 사용하여 저장 프로시저 또는 SQL문과 객체를 결합함으로써 객체 관계 매핑에 도움을 준다.

Mybatis는 데이터베이스에 액세스하는 작접을 캡슐화하고 JDBC 코드 및 매개 변수의 중복작업을 제거한다.

 

특징

- 복잡한 쿼리나 다이나믹한 쿼리에 강하지만 반대로 비슷한 쿼리는 남발하게 되는 단점이 있다.

- 프로그램 코드와 SQL 쿼리의 분리로 코드의 간결성 및 유지보수성이 향상된다.

- resultType, resultClass등 VO를 사용하지 않고 조회결과를 사용자 정의 DTO, MAP등으로 매핑하여 사용할 수 있다.

- 빠른 개발이 가능하여 생산성이 향상된다.

 

MyBatis의 DB Access Architecture

 

기존 JDBC 프로그래밍의 경우 Repository에서 곧바로 JDBC API 쪽으로 접근하여 DB를 연결하였지만, 위의 그림에 나와있듯이 MyBatis를 사용할 경우 Repository와 JDBC API사이에 MyBatis가 위치함으로써 편리한 Access를 제공한다.

 

MyBatis의 주요 컴포넌트

이름 설명
MyBatis 설정파일 (mybatis-config.xml) DB의 접속 정보 또는 Mapping 파일의 경로, alias 등을 설정하는 XML파일
SqlSessionFactoryBuilder MyBatis 설정파일을 읽고 SqlSessionFactory를 생성
SqlSessionFactory SqlSession을 생
SqlSession 가장 핵심적인 역할인 SQL의 실행이나 트랜잭션 관리를 수행
Thread-Safe 하지 않으므로 thread 마다 필요에 따라 생성
Mapping File (mapper.xml) SQL과 객체 매핑 설정을 하는 XML 파일

 

MyBatis의 DB Access 순서

어플리케이션 실행 시 시작되는 프로세스

1. 어플리케이션이 SqlSessionFactoryBuilder에게 SqlSessionFactory를 빌드하도록 요청

2. SqlSessionFactoryBuilder는 SqlSessionFactory를 생성하기 위해 MyBatis 설정 파일을 읽음

3. SqlSessionFactoryBuilder는 MyBatis 설정 파일의 정의에 따라 SqlSessionFactory를 생성

 

클라이언트의 요청에 따라 수행되는 프로세스

4. 클라이언트의 어플리케이션에 대한 요청

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

6. SqlSessionFactory는 SqlSession을 생성하고 이를 어플리케이션에 반환

7. 어플리케이션이 SqlSession에서 Mapper interface 구현 개체를 가져옴

8. 어플리케이션이 Mapper Interface의 메소드를 호출

9. Mapper Interface의 구현 개체가 SqlSession 메소드를 호출하고 SQL 실행 요청

10. SqlSession은 Mapping File에서 실행할 SQL을 찾아서 실행

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함