MyBatis 개요와 특징

MyBatis 개요

  • 자바 오브젝트와 SQL문 사이의 자동 Mapping 기능을 지원하는 ORM 프레임워크
  • SQL을 별도의 파일로 분리해서 관리하게 해주며, 객체-SQL 사이의 파라미터 매핑 작업을 자동으로 해줌
  • Hibernate나 JPA 처럼 새로운 DB 프로그램 패러다임을 익혀야 하는 부담 없이 개발자가 익숙한 SQL을 그대로 이용하면서 JDBC 코드 작성의 불편함도 제거해주고, 도메인 객체나 VO 객체를 중심으로 개발이 가능하다.

MyBatis 특징

1. 쉬운 접근성과 코드의 간결함

  • 가장 간단한 퍼시스턴스 프레임워크
  • XML 형태로 서술된 JDBC 코드라고 생각해도 될만큼 JDBC의 모든 기능을 MyBatis가 대부분 제공
  • 복잡한 JDBC 코드를 걷어내며 깔끔한 소스코드 유지
  • 수동적인 파라미터 설정과 쿼리 결과에 대한 매핑 구문 제거

2. SQL 문과 프로그래밍 코드의 분리

  • SQL 에 변경이 있을 때마다 자바 코드를 수정하거나 컴파일하지 않아도 된다.
  • SQL 작성 관리 검토를 DBA 와 같은 개발자가 아닌 다른사람에게 맡길수 있다.

3. 다양한 프로그래밍 언어로 구현 가능

  • JAVA, C#, .NET, Ruby

Mybatis, Mybatis-Spring의 주요 컴포넌트

MyBatis 와 MyBatis-Spring 을 사용한 DB 액세스 아키텍쳐


MyBatis 를 사용하는 데이터 액세스 계층


MyBatis3 의 주요 컴포넌트


MyBatis3의 주요 컴포넌트의 역할

MyBatis 설정파일 (SqlMapConfig.xml)

  • 데이터베이스의 접속 주소 정보나 mapping 파일의 경로 등의 고정된 환경정보를 설정

SqlSession FactoryBuilder

  • MyBatis 설정 파일을 바탕으로 SqlSessionFactory 를 생성

SqlSessionFactory

  • SqlSession 을 생성

SqlSession

  • 핵심적인 역할을 하는 클래스로서 SQL 실행이나 트랜잭션 관리를 실행한다.
  • SqlSession 오브젝트는 Thread-Safe 하지 않으므로 thread마다 필요에 따라 생성한다.

Mapping 파일 (user.xml)

  • SQL문과 OR Mappring 을 설정한다.

MyBatis-Spring의 주요 컴포넌트

  • SqlSessionTemplate 는 Thread-Safe 하다.

MyBatis-Spring의 주요 컴포넌트의 역할

MyBatis 설정파일(sqlMapConfig.xml)

  • VO 객체의 정보를 설정한다.

SqlSessionFactoryBean

  • 마이바티스 설정파일을 바탕으로 SqlSessionFactory를 생성한다.
  • Spring Bean 으로 등록해야 한다.

SqlSessionTemplate

  • 핵심적인 역할을 하는 클래스로서 SQL 실행이나 트랜잭션 관리를 실행한다.
  • SqlSession 인터페이스로 구현하며, Thread-safe 하다. 멀티스레드 환경에서도 안전
  • Spring Bean으로 등록해야 한다.

Mapping 파일 (user.xml)

  • SQL문과 OR Mapping 을 설정한다.

Spring Bean 설정파일 (beans.xml)

  • SqlSessionFactoryBean을 Bean을 등록할 때 DataSource 정보와 MyBatis Conf 파일 정보, Mapping 파일 정보를 함께 설정한다.
  • SqlSessionTemplate를 Bean 으로 등록한다.

MyBatis-Spring 을 사용한 예제

Mapping 파일 (SQL문 포함)

MyBatis Configuration 파일

Spring Bean 설정 파일

데이터 액세스 계층의 DAO 구현 클래스

'Back-end > Spring' 카테고리의 다른 글

MyBatis 어플리케이션 작성(2)  (0) 2021.06.14
MyBatis 어플리케이션 작성(1)  (0) 2021.06.14
AOP 어플리케이션 작성(2) - Annotation  (0) 2021.06.11
AOP 어플리케이션 작성(1) -XML  (0) 2021.06.11
AOP 개요  (0) 2021.06.11

+ Recent posts