MyBatis란?
- 자바에서 SQL Mapper를 지원해주는 프레임워크
- JDBC를 통해 데이터베이스에 엑세스하는 작업을 캠슐화한다.
- 일반 SQL 쿼리, 저장 프로시저, 고급 매핑을 지원한다.
- 프로그램에 있는 SQL 쿼리를 한 구성파일에 구성하여 프로그램 코드와 SQL을 분리할 수 있다.
- SQL을 직접 작성해서 쿼리 수행 결과를 객체와 매핑한다
- 쿼리문을 XML로 분리 가능하다
MyBatis: 장점:
- 자바의 관계형 데이터베이스 프로그래밍을 쉽게 할 수 있도록 도와준다.
- 모든 JDBC 코드, 매개 변수의 중복작업을 제거한다.
- 복잡한 쿼리 작성이 가능하다
- 데이터 캐싱 기능으로 성능이 향상된다
MyBatis 단점:
- 객체, 쿼리문을 모두 관리해야한다.
- CRUD 메소드를 직접 구현해야한다.
데이터 전달 과정에서
Presentaion Layer, Service Layer, Data Access Layer가 있으며
MyBatis는 Data Access Layer에서 사용하는 프레임워크이다.
각 계층에서의 호출을 보면 다음과 같다.
Controller에서 Service를 호출한다.
Service는 DAO에 있는 메소드를 호출한다.
DAO에서 MyBatis를 호출한다.
다음은 MyBatis의 주요 컴포넌트이다.
파란색 부분은 MyBatis에서 제공하는 클래스 및 설정 파일이다.
MyBatis Config File: XML 환경 설정 파일
MyBatis 설정파일(SqlMapConfig.xml): 데이터베이스의 접속 주소 정보나 Mapping 파일의 경로 등의 고정된 환경정보를 설정한다.
SqlSession Factory Builder: MyBatis 설정 파일을 바탕으로 SqlSessionFactory를 생성한다.
SqlSesionFactory: Session을 생성한다.
SqlSession: 핵심적인 역할을 하는 클래스로서 SQL 실행이나 트랜잭션 관리를 실행한다. SQlSession 오브젝트는 Thread-Safe하지 않으므로 thread마다 필요에 따라 생성한다.
mappping 파일(user.xml): SQL문과 OR Mapping을 설정한다.
보라색 부분은 개발자가 작성하는 부분이다.
Mapping File: SQL문 작성
참고:
'Spring' 카테고리의 다른 글
Cannot resolve symbol 'springframework' (0) | 2023.07.17 |
---|---|
Spring - MultiValueMap<K, V>: Value가 List로 저장 (0) | 2023.01.13 |
jasypt 에러: Failed to bind properties under 'spring.datasource.password' to java.lang.String: (0) | 2022.12.29 |
Spring Boot: Spring 환경설정 (0) | 2022.12.21 |
Spring DI(Dependency Injection, 의존성 주입) (0) | 2022.12.07 |
댓글