Mybatis ?
데이트의 입력,조회,수정,삭제(CRUD) 를 보다 쉽게 하기 위해
xml 구조화한 Mapper 설정 파일을 통해서 JDBC 를 구현한 영속 프레임 워크
객체 지향 언어인 자바의 관계형 데이터 베이스 프로그래밍을 좀 더 쉽게 할 수 있게 도와주는 개발 프레임 워크
JDBC 를 통해 데이터 베이스에 엑서스하는 작업을 캡슐화 하고 일반 SQL 쿼리, 저장 프로 시저 및 고급 매핑을 지원하여 모든 JDBC 코드 및 매개 변수의 중복작업을 제거 합니다.
Mybatis 에서는 프로그램에 있는 SQL쿼리들을 한 구성파일에 구성하여 프로그램 코드와 SQL을 분리할 수 있는
장점을 가지고 있다.
MyBatis 특징
복잡한 쿼리나 다이나믹한 쿼리에 강하다 - 반대로 비슷한 쿼리는 남발하게 되는 단점이 있다.
프로그램 코드와 SQL 쿼리의 분리로 코드의 간결성 및 유지 보수성 향상
resultTpye, resultClass 등 Vo 를 사용하지 않고 조회 결과를 사용자 정의 DTO,MAP 등으로 맵핑하여 사용한다.
빠른 개발이 가능해 생선성이 향상된다.
MyBatis 구조
Servive > Repository(Mapper) > MyBatis3/Mybatis Spring
>> JDBC interfaces >> JDBC Implementations >> DB
Mybatis 흐름
JDBC template 을 통해 SQL을 실행 하였다면 Mybatis 는 해당 흐름을 전용 라이브러리를
통해 대체하여 동작한다고 생각하면 된다.
Controller >> Service >> DAO(Mybatis) >> DataBase(데이터 관리 서버)
Maybatis 동작 구조
https://mybatis.org/mybatis-3/ko/
https://github.com/mybatis/mybatis-3/releases
mybatis-x.x.x.jar 파일을 넣어 객체를 활용할 수 있다.
Session Factory Builder(Object) >>SessionFactory(Object) >> Session
>> selectOne, selectList,selectMap,insert,update, delete
mybatis-config.xml >> clalss의 Alias(별칭) 설정 , DB 연결설정, sql 구분 경로 설정
mapper.xml >> SQL 쿼리문 설정(인자값,결과값,데이터타입 등설정)
MyBatis3 주요 구성 요소
MyBatis configuration file
MyBatis3의 작업 설정을 설명하는 XML 파일입니다.
데이터베이스의 연결 대상, 매핑 파일의 경로, MyBatis3의 작업 설정 등과 같은 세부 사항을 설명하는 파일입니다.
Spring과 통합하여 사용할 때 데이터베이스의 연결 대상과 매핑 파일 경로 설정을 구성 파일에 지정할 필요가 없습니다. 그러나 MyBatis3의 기본 작업을 변경하거나 확장 할 때 설정이 수행됩니다.
org.apache.ibatis.session.SqlSessionFactoryBuilder
MyBatis3 구성 파일을 읽고 생성하는 SqlSessionFactory 구성 요소입니다.
이 구성 요소는 스프링과 통합되어 사용할 때 애플리케이션 클래스에서 직접 처리하지 않습니다.
org.apache.ibatis.session.SqlSessionFactory
SqlSession을 생성하는 구성 요소입니다.
이 구성 요소는 스프링과 통합되어 사용할 때 애플리케이션 클래스에서 직접 처리하지 않습니다.
org.apache.ibatis.session.SqlSession
SQL 실행 및 트랜잭션 제어를 위한 API를 제공하는 구성 요소입니다.
MyBatis3를 사용하여 데이터베이스에 액세스할 때 가장 중요한 역할을 하는 구성 요소입니다.
이 구성 요소를 스프링과 통합하여 사용할 경우 애플리케이션 클래스에서 직접 처리하지 않습니다.
Mapper interface
typeafe에서 매핑 파일에 정의된 SQL을 호출하는 인터페이스입니다.
MyBatis3는 매퍼 인터페이스에 대한 구현 클래스를 자동으로 생성하므로 개발자는 인터페이스만 생성하면 됩니다.
Mapping file
SQL 및 O/R 매핑 설정을 설명하는 XML 파일입니다.
'백엔드' 카테고리의 다른 글
XML(eXtensible Markup Language) ? (0) | 2022.01.04 |
---|---|
웹(WWW)의 동작 원리 (0) | 2022.01.04 |
Cookies,Sessions and Tokens (0) | 2021.10.03 |