MyBatis 란?
객체 지향적으로 DB와 상호작용할 수 있는 JPA와 같은 ORM 은 아니지만,
SQL 자동 매핑, 동적 쿼리, 저장 프로시저 등을 제공하는 JDBC와 JPA 사이의 프레임워크입니다.
MyBatis
특징
1. SQL 중심 개발
개발자가 직접 SQL을 작성 후 XML이나 어노테이션을 통해 Java 객체와 매핑한다.
SQL을 명시적으로 작성하기 때문에, 복잡한 쿼리를 작성할 수 있다.
2. Java 객체 매핑
데이터베이스와 자바 객체 사이의 매핑을 자동으로 처리해준다.
3. 유연성
SQL의 자유도를 유지하면서, 객체 매핑과 데이터 엑세스 기능을 지원한다.
4. 다양한 기능 지원
동적 SQL, 캐싱, 트랜잭션 관리 등의 다양한 기능을 지원한다.
구성 요소
1. SqlSessionFactory
Mybatis의 핵심 객체로, 데이터베이스의 연결 세션을 생성하고 관리한다.
2. Mapper
SQL쿼리와 Java 메서드를 매핑하는 역할을 수행하며, XML 또는 어노테이션으로 구현한다.
3. Configuration
MyBatis의 설정 정보나 매퍼 경로 등의 기본적인 설정을 지정한다.
4. Session
데이터베이스와 상호작용하는 작업 단위로, 트랜잭션을 관리하며 쿼리 실행, 결과 반환 등의 역할을 한다.
장단점
장점
- SQL을 직접 작성할 수 있어 복잡한 쿼리를 효율적으로 처리할 수 있다.
- JDBC 처럼 수동으로 매핑하는게 아니라, 자동으로 매핑해주기 때문에 좀더 객체지향적으로 사용할 수 있다.
- SQL과 비즈니스 로직을 분리하여 코드 관리가 용이하다.
- 조건에 따라 쿼리를 동적으로 생성할 수 있다.
단점
- SQL 양이 많아진다면 관리하기가 어렵다.
- JPA에 비해서는 반복적으로 SQL을 작성해야하기 때문에 생산성이 낮다.
- 객체와 관계의 불일치가 발생할 때 수동으로 해결해주어야 한다.
'공부 > Spring Boot' 카테고리의 다른 글
[Database] 03. QueryDSL (1) | 2024.11.15 |
---|---|
[Database] 02. JPA (0) | 2024.11.14 |
[Database] 01. JDBC (0) | 2024.11.13 |
[Spring Batch] 01. Spring Batch 기본 개념 (0) | 2024.11.13 |
[스프링 부트 공부 일지] 4. 웹 어플리케이션 서버 구축하기 (2) (0) | 2022.12.22 |