본문 바로가기

내배캠/TIL

MyBatis 란?

MyBatis 란?

MyBatis 는 RowMapper 가 가지고있는 단점인 “반복되는 코드”를 줄이고 “함께있는 프로그램 코드와 쿼리 코드를 분리하여 관리”하고 싶은 니즈를 반영하여 탄생하였습니다.
  • SQL Mapper 두번째 주자로 MyBatis 탄생
    • 반복적인 JDBC 프로그래밍을 단순화 하고싶다.
    • SQL 쿼리들을 XML 파일에 작성하여 코드와 SQL 을 분리 하고싶다.
  • MyBatis 특징
    • jdbc로 처리하는 코드의 설정(Connection) 부분을 줄이고 실제 sql문에 연결함으로서 빠른 개발이 가능하게 한다. (SQL Mapper 특징)
    • MyBatis 코드는 map 인터페이스(또는 클래스)와 SQL 쿼리와 ResultSet 매핑을 위한 xml 및annotation을 사용한다.
    • 다른 방식에 비해 객체자체보다 쿼리에 집중할 수 있다.
  • MyBatis 한계점
    • 결국 SQL을 직접 작성하는것은 피곤하다…(DB 기능에 종속적)
    • 테이블마다 비슷한 CRUD 반복, DB타입 및 테이블에 종속적이다.

 

실행 순서

 

(1) ~ (3)은 응용 프로그램 시작시 수행되는 프로세스입니다.

  • (1) 응용 프로그램이 SqlSessionFactoryBuilder를 위해 SqlSessionFactory를 빌드하도록 요청합니다.
  • (2) SqlSessionFactoryBuilder는 SqlSessionFactory를 생성하기 위한 Mybatis 구성 파일을 읽습니다.
  • (3) SqlSessionFactoryBuilder는 Mybatis 구성 파일의 정의에 따라 SqlSessionFactory를 생성합니다.

 

(4) ~ (10)은 클라이언트의 각 요청에 대해 수행되는 프로세스입니다.

  • (4) 클라이언트가 응용 프로그램에 대한 프로세스를 요청합니다.
  • (5) 응용 프로그램은 SqlSessionFactoryBuilder를 사용하여 빌드된 SqlSessionFactory에서 SqlSession을 가져옵니다.
  • (6) SqlSessionFactory는 SqlSession을 생성하고 이를 애플리케이션에 반환합니다.
  • (7) 응용 프로그램이 SqlSession에서 매퍼 인터페이스의 구현 개체를 가져옵니다.
  • (8) 응용 프로그램이 매퍼 인터페이스 메서드를 호출합니다.
  • (9) 매퍼 인터페이스의 구현 개체가 SqlSession 메서드를 호출하고 SQL 실행을 요청합니다.
  • (10) SqlSession은 매핑 파일에서 실행할 SQL을 가져와 SQL을 실행합니다.

'내배캠 > TIL' 카테고리의 다른 글

JPQL 관련 트러블 슈팅  (1) 2024.09.29
Docker 설치 방법 및 오류 해결  (1) 2024.09.27
세션 (Session)  (0) 2024.09.24
[SQL] 세션 변수  (0) 2024.09.19
[SQL] 오프라인/온라인 판매 데이터 통합하기  (1) 2024.09.14