[LG U+ 유레카 3기] MyBatis ch01 | XML 기반 매핑 실습

2025. 10. 17. 15:19Java/Mybatis


❶ 상황 설명

MyBatis 첫 번째 실습(ch01)은 JDBC와 MyBatis의 차이를 이해하고, 단순한 Book 테이블 조회 기능을 MyBatis를 통해 수행하는 예제였다.
직접 JDBC 코드를 작성하던 방식 대신, MyBatis의 SqlSessionMapper를 이용하여 SQL을 XML로 분리하고, 실행 흐름을 단순화하는 것이 목표였다.


❷ 코드 및 실행 흐름


package ch01;

import java.io.Reader;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.*;

public class MyApp {
    public static void main(String[] args) throws Exception {
        // 1️⃣ MyBatis 설정 파일(mybatis-config.xml) 읽기
        Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
        
        // 2️⃣ SqlSession 생성
        try (SqlSession session = factory.openSession()) {
            // 3️⃣ Mapper 인터페이스 연결
            BookMapper mapper = session.getMapper(BookMapper.class);
            
            // 4️⃣ SQL 실행
            List<Book> books = mapper.getBooks();
            
            // 5️⃣ 결과 출력
            for (Book b : books) {
                System.out.println(b.getTitle() + " / " + b.getPrice());
            }
        }
    }
}

실행 흐름 요약 👇

단계 내용
1 MyBatis 설정파일(mybatis-config.xml) 로드
2 SqlSessionFactory 생성 후 세션 오픈
3 Mapper 인터페이스와 XML 매핑 연결
4 SQL 실행 → 결과를 List<Book>로 반환
5 조회 결과 출력

❸ 결과


[실행 결과 예시]
자바의 정석 / 25000
이것이 MySQL이다 / 28000
스프링 입문 / 32000

JDBC에서는 Connection, Statement, ResultSet을 직접 다뤄야 하지만, MyBatis에서는 매퍼(XML)만 작성하면 자동으로 매핑되어 훨씬 간결하다.


❹ 개념 정리

  • SqlSessionFactory : SqlSession을 생성하는 MyBatis의 핵심 팩토리 객체
  • SqlSession : DB와 직접 연결되어 SQL을 실행하는 객체
  • Mapper : 인터페이스와 XML 매퍼 파일을 연결하는 MyBatis의 추상화 레이어
  • mybatis-config.xml : 환경 설정, DB 연결, 매퍼 등록 등 전반 설정 담당
  • JDBC vs MyBatis : JDBC는 SQL과 자바 코드가 뒤섞이지만, MyBatis는 XML 분리로 유지보수가 쉬움

❺ 핵심 요약

✅ MyBatis 기본 구조는 SqlSessionFactory → SqlSession → Mapper → SQL 실행 순서로 작동한다.
SQL을 XML로 분리하여 가독성과 유지보수성을 높인다.
✅ ch01의 핵심 목표는 “MyBatis의 기본 실행 흐름”을 이해하는 것이다.