MyBatis란?
MyBatis란?
-객체 지향 언어인 Java의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 도와주는 Persistence Framework (데이터를 다루는 클래스 및 설정파일 집합)
-자바 오브젝트와 SQL사이의 자동 매핑 기능을 지원하는 ORM(Object relational Mapping) Framework
-JDBC를 통해 RDBMS에 엑세스하는 작업을 캡슐화하고 기존 JDBC의 중복작업을 간소화
-XML파일의 형태인 mapper를 통해 프로그램 코드로 부터 SQL 쿼리를 분리하고 Java 객체와 매핑하는 작업을 도와줌
MyBatis 장점
-쉬운 접근성과 코드의 간결함 (JDBC의 모든 기능을 Mybatis가 대부분 제공)
-SQL문과 프로그래밍 코드의 분리 (SQL에 변경이 있을 때마다 자바 코드를 수정하거나 컴파일하지 않아도 됨)
-다양한 프로그래밍 언어로 구현가능 (Java, C#, .NET, Ruby)
MyBatis의 DB Access Architecture
기존 JDBC 프로그래밍의 경우 Repository에서 곧바로 JDBC API쪽으로 접근하여 DB를 연결하였지만, 위의 그림에 나와있듯 Mybatis를 사용할 경우 Repository와 JDBC API사이에 MyBatis가 위치함으로써 편리한 Access를 제공함.
MyBatis를 사용하는 데이터 액세스 계층
-Mybatis는 Data Access Layer에서 사용하는 프레임워크
-Controller에서 Service를 호출하고 Service가 DAO계층에 있는 메소드를 호출하면 DAO에서 Mybatis를 호출
MyBatis의 주요 컴포넌트
-MyBatis 설정파일(mybatis-config.xml) : DB의 접속 정보 또는 Mapping 파일의 경로, alias 등등을 설정하는 XML파일
-SqlSessionFactoryBuilder : MyBatis 설정파일을 읽고 SqlSessionFactory를 생성
-SqlSessionFactory : SqlSession을 생성
-SqlSession : 가장 핵심적인 역할을 하는 SQL의 실행이나 트랙잭션 관리를 수행. Thread-safe 하지 않으므로 thread 마다 필요에 따라 생성
-Mapping 파일(mapper.xml) : SQL과 객체 매핑설정을 하는 XML 파일
MyBatis의 DB Access 순서
-애플리케이션 실행시 시작되는 프로세스
(1) 애플리케이션이 SqlSessionFactoryBuilder를 위해 SqlSessionFactory를 빌드하도록 요청
(2) SqlSessionFactoryBuilder는 SqlSessionFactory를 생성하기 위해 MyBatis 설정 파일을 읽음
(3) SqlSessionFactoryBuilder는 MyBatis 설정 파일의 정의에 따라 SqlSessionFactory를 생성
-클라이언트의 요청에 따라 수행되는 프로세스
(4) 클라이언트의 애플리케이션에 대한 요청
(5) 애플리케이션은 SqlSessionFactoryBuilder를 사용하여 빌드된 SqlSessioFactory에서 SqlSession을 가져옴
(6) SqlSessionFactory는 SqlSession 생성하고 이를 애플리케이션에 반환
(7) 애플리케이션이 SqlSession에서 Mapper Interface 구현 개체를 가져옴
(8) 애플리케이션에서 Mapper Interface의 메소드를 호출
(9) Mapper Interfcae의 구현 개체가 SqlSession메소드를 호출하고 SQL 실행 요청
(10) SqlSession은 Mapping File에서 실행할 SQL을 찾아서 실행
출처
www.youtube.com/watch?v=9b5P4YiyqOY&feature=youtu.be
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