스프링(Spring) 프레임워크와 함께 사용되는 데이터 매핑 프레임워크이며 SQL 기반의 매핑을 제공한다.
MyBatis는 기본적으로 Java 애플리케이션과 데이터베이스 간의 데이터 매핑을 담당하는 역할을 한다. 이를 통해 SQL 쿼리를 객체와 연동시켜서 데이터를 쉽게 주고받을 수 있도록 도와준다.
스프링에서 MyBatis 는 쿼리 작성과 객체 매핑을 분리하여, 데이터베이스와의 연결을 단순화하면서도 더 세밀한 제어가 가능하게 해준다. MyBatis 는 기본적으로 SQL을 직접 작성하여 사용하는데, 이로 인해 복잡한 쿼리를 자유롭게 작성하고 최적화할 수 있다.
MyBatis 는 SQL을 XML 파일 또는 애너테이션을 통해 정의하고 이를 Java 객체와 매핑하여 데이터를 처리한다.MyBatis 는 데이터베이스와의 연결을 설정하고 관리하는 역할도 한다. SqlSessionFactory 와 SqlSession 을 통해 데이터베이스와 연결을 유지하며, 트랜잭션 관리를 할 수 있다.
SqlSessionFactory 란?
SqlSessionFactory는MyBatis에서SqlSession객체를 생성하는 역할을 하는 인터페이스이다.
즉, 데이터베이스와의 세션(SqlSession)을 열어주는 팩토리(Factory) 패턴을 따르는 객체 를 말한다.
SqlSessionFactory 의 주요 기능1. SqlSession 객체 생성
openSession() 메서드를 사용하여 SqlSession 객체를 생성한다.2. MyBatis 환경 설정 로드
MyBatis 설정 파일(mybatis-config.xml)을 읽고 설정을 적용한다.3. DB 연결 관리
DataSource를 통해 데이터베이스 연결을 관리한다.
캐싱 지원
MyBatis 환경 설정 파일)<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
<property name="username" value="root"/>
<property name="password" value="1234"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/MemberMapper.xml"/>
</mappers>
</configuration>
📌 역할: MyBatis 설정 파일로 DB 연결 정보 및 Mapper 파일을 등록한다.
SqlSession 란?
MyBatis에서 SQL 실행, 트랜잭션 관리, 매핑된 SQL 호출 등을 담당하는 인터페이스이다. MyBatis에서 DB와의 연결을 관리하는 핵심 객체이며, 주로 DAO(데이터 액세스 객체)에서 사용된다.
SqlSession 의 주요 기능1. SQL 실행
selectOne() , selectList(), insert(), update , delete() 등의 메서드를 사용해 SQL을 실행한다.2. 트랜잭션 관리
commit() 또는 rollback() 을 사용해 트랜잭션을 수동으로 관리할 수 있습니다.
자동 커밋 모드(autoCommit = true) 로 설정하면, SQL 실행 후 자동으로 커밋된다.
3. Mapper 인터페이스와의 연동
getMapper(Class<T> type) 을 사용하여 MyBatis 매퍼 인터페이스를 가져와 사용할 수 있다.MyBatis 는 동적 SQL을 지원하여 조건에 따라 쿼리를 동적으로 변경할 수 있다. 예를 들어, 특정 조건에 따라 SELECT , INSERT , UPDATE , DELETE 쿼리를 동적으로 생성할 수 있어, 복잡한 쿼리도 유연하게 작성할 수 있다.
1. SQL 작성 방식의 유연성
2. 동적 SQL 지원
<if>, <choose>, <foreach> 등의 태그를 활용해 조건에 따라 SQL을 동적으로 생성 가능하다.
사용자 입력값에 따라 SELECT , INSERT, UPDATE, DELETE 쿼리를 유연하게 작성할 수 있다.
1. 스프링과의 강력한 통합
스프링의 트랜잭션 관리, DI(의존성 주입), AOP 등의 기능을 자연스럽게 활용 가능하다.
@Mapper 애너테이션과 스프링 MyBatis 모듈을 활용하면 DAO 객체를 자동으로 주입할 수 있다.
2. 직관적인 SQL 관리
3. 유연한 데이터 매핑 (ResultMap)
🗒️MemberDAOImpl.java

🗒️member.xml
