본문 바로가기
Java/Spring

[Spring/MyBatis] MyBatis?

by WaterPunch 2021. 5. 28.

MyBatis란?

SQL 기반의 영속성 계층 프레임워크 (Persistence layer framework) 

  - SQL과 자바 객채를 매핑하는 사상에서 개발된 데이터베이스 접근용 프레임워크

  - SQL을 별도의 파일로 분리해서 관리하게 해준다

JDBC Framework

  - Hibernate나 JPA 처럼 새로운 DB프로그래밍 패러다임을 익혀야 하는 부담없이 SQL을 그대로 이용

  - JDBC 코드 작성의 불편함도 제거해주고 도메인 객체나 VO 객체를 중심으로 개발이 가능

 

특징

  • SQL문과 프로그램 코드의 분리
    - SQL을 설정파일이나 Annotation에 선언적으로 정의해서 자바로 작성된 비즈니스 로직(애플리케이션)에서 SQL 자체를 숨길 수 있음
    - SQL에 변경이 있을 때마다 자바 코드를 수정하거나 컴파일하지 않아도 됨
  • 쉬운 접근성과 코드의 간결함
    - JDBC의 모든 기능을 MyBatis가 대부분 제공
    - 복잡한 JDBC 코드를 걷어내고 깔끔한 소스코드를 유지할 수 있음
    - 수동적인 파라미터 설정과 쿼리 결과에 대한 맵핑 구문을 제거할 수 있음
  • 다양한 프로그래밍 언어로 구현 가능
    - Java, C#, .NET, Ruby

 

MyBatis3 주요 컴포넌트 역할

MyBatis 설정파일
(SqlMapConfig.xml)
- 데이터베이스의 접속 주소 정보나 Mapping 파일의 경로 등의 고정된 환경정보를 설정한다
SqlSessionFactoryBuilder -  MyBatis 설정 파일을 바탕으로 SqlSessionFactory를 생성
SqlSessionFactory - SqlSession을 생성
SqlSession - 핵심적인 역할을 하는 클래스로서 SQL 실행이나 트랜잭션 관리를 실행한다
- SqlSession Object는 Thread-Safe 하지 않으므로 쓰레드마다 필요에 따라 생성한다
Maaping 파일
(*-mapper.xml)
- SQL 문 OR Mapping(ORM)을 설정한다
SqlSessionFactoryBean - MyBatis 설정파일을 바탕으로 SqlSessionFactory를 생성한다
- Spring Bean으로 등록해야 한다
SqlSessionTemplate - 핵심적인 역할을 하는 클래스로서 SQL 실행이나 트랜잭션 관리를 실행한다
- SqlSession 인터페이스를 구현하며, Thread-Safe한다
- Spring Bean으로 등록해야 한다

 

 

MyBatis와 MyBatis-Spring을 사용한 DB Access Architecture

 

MyBatis를 사용하는 Data Access 계층 흐름도

반응형

댓글