ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Mybatis 시리즈 1] 동작 원리와 스프링에서 어떻게 사용될까?
    Spring Boot/DB 2022. 4. 14. 22:06

    본 시리즈는 빠르게 Mybatis를 사용해보는 목적으로 작성했습니다.

    개요

    MyBatis는 자바 오브젝트와 SQL문 사이의 자동 Mapping 기능을 지원하는 오픈소스 ORM 프레임워크 (Object Relational Mapping)

    장점

    • Hibernate나 JPA 처럼 새로운 DB 패러다임을 익혀야하는 부담이 적다.
    • JDBC 코드 작성의 불편함 제거
    • 도메인 객체나 VO 객체 중심으로 개발이 가능하다.
    • XML에 SQL 문을 분리하여 관리 → 개발자가 아닌 사람도 작성할 수 있다.

    Mybatis-spring, Mybatis3의 아키텍처 (스프링)

    • JDBC : 디비 연결 → DataSource
    • JDBC Driver : DB 벤더에서 제공하는 드라이버
    • Mybatis → JDBC는 저수준의 API, Mybatis가 Wrapping해서 개발자가 사용하기 쉽게 만들어 준다.
    • Reporgitory : DAO, Mapper → Data Access Layer (mybatis가 사용되는 계층)

     

    주요 컴포넌트

    • 보라색 = 개발자가 작성
    • 파란색 = 마이바티스 자체에서 제공
    • MappingFile : 분리된 SQL 문
    • MyBatis Config File : 마이바티스 설정 XML 파일

    마이바티스 동작 과정

    1. APP에서 SqlSessionBuilder 호출,
    2. 빌더가 Config File을 읽고 → SqlSessionFactory를 생성
    3. 다시 APP에서 CRUD 메서드 호출 → 어플리케이션 상에서 SqlSessionFactory 호출
    4. SqlSessionFactory가 SqlSession을 생성해서 APP에 return!
    5. SqlSession이 개발자가 작성한 SQL문을 호출 (핵심!)
    • 정리 
    Mybatis 설정파일 데이터베이스 접속 주소, Mapping 파일의 경로 등 고정된 환경설정 정보
    SqlSessionFactoryBuiler 설정파일 바탕으로 SqlSessionFactory 생성
    SqlSessionFactory SqlSession 생성
    SqlSession (핵심!) - SQL 실행, 트랜잭션 관리
    - SqlSession 오브젝트는 Thread-Safe하지 않아서 thread마다 필요에 따라 생성 
    Mapping 파일(user.xml) SQL 파일. O/R Mapping을 설정

     

    Mybatis-Spring?

    • 마이바티스와 스프링 연동을 용이하게 하는 오픈소스

     

    Mybatis의 핵심인 SqlSessionFactory와 SqlSession을 Wrapping해서 스프링에 쓰기 쉽게 해준다.

    • 개발자는 파란색 부분을 Bean으로 등록 위해서, 보라색 부분을 작성한다.
    • SqlSessonTemplate은 SqlSession을 더욱 편하게 사용하려고 Wrapping해서 스프링에 올라가는 것
      • Thread-safe하다 = 멀티 쓰레드 환경에서 사용할 수 있다.
    • 정리!
    MyBatis 설정파일 VO 객체 정보를 설정 (원래 DB 접속, Mapping 파일 위치 써야하는데 스프링 설정에 하면 됨)
    SqlSessionFactoryBean 설정 파일을 바탕으로 SqlSessionFactory를 생성한다. → Bean에 등록
    SqlSessionTemplate (핵심) SQL 실행, 트랜잭션 관리 Thread-safe함
    Mapping file SQL 파일
    Spring Bean 설정파일 SqlSessionFactoryBean을 Bean에 등록할 때 

    DataSource 정보, MyBatis Config 파일 정보, SqlSessionTemplate를 Bean에 등록
       

    Reference

    https://www.youtube.com/watch?v=9b5P4YiyqOY

     

    반응형
Designed by Tistory.