Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
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
Archives
Today
Total
관리 메뉴

forest_moon

MyBatis 란? 본문

이것저것

MyBatis 란?

rokga 2022. 12. 20. 19:35

MyBatis란?

자바 퍼시스턴스 프레임워크의 하나로 XML 서술자나 애너테이션(annotation)을 사용하여 저장 프로시저 SQL 문으로 객체들을 연결시켜주고, 관계형 데이터베이스에서 조회한 데이터를 Java 객체로 변환하여 리턴해 주고, Java 객체를 관계형 데이터베이스에 저장해 주는 라이브러리 혹은 기술을 말한다.

혹은 객체 지향 언어인 자바의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 할 수 있게 도와 주는 개발 프레임 워크로서 JDBC를 통해 데이터베이스에 엑세스하는 작업을 캡슐화하고 일반 SQL 쿼리, 저장 프로 시저 및 고급 매핑을 지원하며 모든 JDBC 코드 및 매개 변수의 중복작업을 제거 합니다. Mybatis에서는 프로그램에 있는 SQL쿼리들을 한 구성파일에 구성하여 프로그램 코드와 SQL을 분리할 수 있는 장점을 가지고 있다.

 

 

 

 

MyBatis 특징

 

  • 복잡한 쿼리나 다이나믹한 쿼리에 강하다 - 반대로 비슷한 쿼리는 남발하게 되는 단점이 있다.
  • 프로그램 코드와 SQL 쿼리의 분리로 코드의 간결성 및 유지보수성 향상
  • 다른 ORM(Object Relational Mapping) 프레임워크에 비해 추가적인 학습의 부담이 적다.
  • resultType, resultClass등 Vo를 사용하지 않고 조회결과를 사용자 정의 DTO, MAP 등으로 맵핑하여 사용 할 수 있다.
  • 빠른 개발이 가능하여 생산성이 향상된다.

 

DB Access Architecture

 

기존 JDBC 프로그래밍의 경우 Repository에서 곧바로 JDBC API 쪽으로 접근하여 DB를 연결하지만

MyBatis의 경우에는 Repository와 JDBC API사이에 MyBatis가 위치함으로서 개발자가 조금 더편리하게 접글 할 수 있도록 

Access를 제공한다.

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을 찾아서 실행

 

MyBatis의 주요 컴포넌트의 역할

이름 설명
MyBatis 설정파일 (mybatis-config.xml) 데이터베이스의 접속 주소 정보나 Mapping 파일의 경로 등의 고정된 환경정보를 설정한다.
SqlSessionFactoryBuilder MyBatis 설정 파일을 바탕으로 SqlSessionFactory를 생성한다.
SqlSessionFactory SqlSession을 생성
SqlSession 핵심적인 역할을 하는 클래스로서 SQL 실행의 역할이고  트랙잭션 관리를 실행한다. SqlSession 오브젝트는 Thread-Safe 하지 않으므로 thread마다 필요에 따라 생성한다.
Mapping File (mapper.xml) SQL문과 OR Mapping을 설정한다.

 

Mybatis-Spring의 주요 컴포넌트

  • MyBatis 설정파일(SqlMapConfig.xml) : VO 객체의 정보를 설정한다.
  • SqlSessionFactory : MyBatis 설정파일을 바탕으로 SqlSessionFactory를 생성한다, Spring Bean으로 등록해야 한다.
  • SqlSessionTemplate : 핵심적인 역할을 하는 클래스로서 SQL 실행이나 트랜잭션 관리를 실행한다. SqlSession 인터페이스를 구현하며, Thread-safe 하다. Spring Bean으로 등록해야 한다.
  • Mapping 파일 (user.xml) : SQL문과 OR Mapping을 설정한다.
  • Spring Bean 설정 파일 (mybatisBeans.xml) : SqlSessionFactoryBean을 Bean 등록할 때 DataSource 정보와 MyBatis Config 파일정보, Mapping 파일의 정보를 함께 설정한다. SqlSessionTemplate을 Bean으로 등록한다.

 

Reference:

https://byul91oh.tistory.com/232

https://ko.wikipedia.org/wiki/%EB%A7%88%EC%9D%B4%EB%B0%94%ED%8B%B0%EC%8A%A4