Java/일반

MyBatis

창욱씨 2020. 3. 26. 19:13

MyBatis란

MyBatis의 개념

MyBatis는 Java 오브젝트와 SQL문 사이의 매핑 기능을 지원해 Java의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 할 수 있도록 도와주는 개발 프레임워크입니다. JDBC를 통해 데이터베이스에 액세스하는 작업을 캡슐화하고 일반 SQL 쿼리, 저장 프로시저 및 고급 매핑을 지원하며 모든 JDBC 코드 및 매개 변수의 중복 작업을 제거합니다.

MyBatis의 특징

  • SQL 쿼리들을 한 파일에 구성하여 프로그램 코드와 SQL을 분리할 수 있음
  • 복잡한 쿼리나 다이나믹한 쿼리에 강함
  • 데이터 조회 결과를 사용자 정의 DTO, MAP 등으로 맵핑하여 사용 가능
  • 복잡한 JDBC 코드를 걷어내어 깔끔한 코드를 유지할 수 있음
  • 접근하기 쉽고 간단한 퍼시턴스 프레임워크

MyBatis의 구조

구성 요소/ 구성 파일

설명

MyBatis Configuration file

- MyBatis의 작업 설정을 설명하는 XML파일

- 데이터베이스의 연결 대상, 매핑 파일의 경로 등의 세부 사항을 설명하는 파일

SqlSessionFactoryBuilder

- MyBatis 구성 파일을 읽고 생성하는 SqlSessionFactory 구성 요소

SqlSessionFactory

- SqlSession을 생성하는 구성 요소

SqlSession

- SQL 실행 및 트랜잭션 제어를 위한 API를 제공하는 구성 요소

Mapper Interface

- 매핑 파일에 정의된 SQL을 호출하는 인터페이스

- MyBatis가 구현 클래스를 자동으로 생성하므로 개발자는 인터페이스만 생성

Mapping File

- SQL O/R 매핑 설정을 설명하는 XML 파일

MyBatis가 DB에 Access하는 순서

  1. Application이 SqlSessionFactoryBuilder를 위해 SqlSessionFactory를 빌드하도록 요청
  2. SqlSessionFactoryBuilder는 SqlSessionFactory를 생성하기 위해 MyBatis 구성 파일을 로드
  3. SqlSessionFactoryBuilder는 MyBatis 구성 파일의 정의에 따라 SqlSessionFactory를 생성
  4. 클라이언트가 요청을 보냄
  5. Application은 빌드된 SqlSessionFactory에서 SqlSession을 가져옴
  6. SqlSessionFactory는 SqlSession을 생성하고 이를 Application에 반환
  7. Application이 SqlSession에서 매퍼 인터페이스의 구현 개체를 가져옴
  8. 응용 프로그램이 Mapper Interface를 호출
  9. Mapper Interface의 구현 개체가 SqlSession 메서드를 호출하고 SQL 실행을 요청
  10. SqlSession은 매핑 파일에서 실행할 SQL을 가져와 SQL을 실행

참조: https://khj93.tistory.com/entry/MyBatis-MyBatis%EB%9E%80-%EA%B0%9C%EB%85%90-%EB%B0%8F-%ED%95%B5%EC%8B%AC-%EC%A0%95%EB%A6%AC

728x90