Query Mapper를 통해 SQL 쿼리를 관리한다. 별도의 쿼리 파일을 통해 SQL을 관리함으로써 코드의 가독성과 유지보수성을 높일 수 있다.
📌 RowMapper의 단점인 "반복되는 코드"를 줄이고 함께있는 프로그램 코드와 쿼리 코드를 분리하여 관리할 수 있게 한다


SqlSession; MyBatis에서 데이터베이스에 접근하는 실제 인터페이스
- SQL을 실행하고, 데이터베이스에서 데이터를 가져오거나 수정할 수 있음.
- SqlSession을 사용하려면 먼저 SqlSessionFactory를 통해 생성해야 함.
- 트랜잭션을 관리할 수 있으며, 사용 후 반드시 닫아야 함(session.close()).
SqlSessionFactory; SqlSession을 생성하는 역할을 하는 팩토리 객체
- 애플리케이션이 실행될 때 한 번만 생성되며, 이를 통해 여러 개의 SqlSession을 만들 수 있음.
- MyBatis의 설정 파일(mybatis-config.xml)을 읽어, 데이터베이스 연결 정보를 포함한 SqlSession을 생성하는 역할을 함
(1) 응용 프로그램이 SqlSessionFactoryBuilder를 위해 SqlSessionFactory를 빌드하도록 요청
(2) SqlSessionFactoryBuilder는 SqlSessionFactory를 생성하기 위한 Mybatis 구성 파일을 읽음
(3) SqlSessionFactoryBuilder는 Mybatis 구성 파일의 정의에 따라 SqlSessionFactory를 생성
(4) 클라이언트가 응용 프로그램에 대한 프로세스를 요청
(5) 응용 프로그램은 SqlSessionFactoryBuilder를 사용하여 빌드된 SqlSessionFactory에서 SqlSession을 가져옴
(6) SqlSessionFactory는 SqlSession을 생성하고 이를 애플리케이션에 반환
(7) 응용 프로그램이 SqlSession에서 매퍼 인터페이스의 구현 개체를 가져옴
(8) 응용 프로그램이 매퍼 인터페이스 메서드를 호출
(9) 매퍼 인터페이스의 구현 개체가 SqlSession 메서드를 호출하고 SQL 실행을 요청
(10) SqlSession은 매핑 파일에서 실행할 SQL을 가져와 SQL을 실행
MyBatis 설정 파일을 읽어와서, 설정정보 기반으로 SqlSession Factory 를 생성하는 빌더 객체
매핑해줄 객체가 들어있는 패키지 경로와 Mapping File 목록을 지정해주는 설정 파일
<!-- /resources/mybatis-config.xml -->
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<package name="com.thesun4sky.querymapper.domain"/>
</typeAliases>
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
설정에 맞게 SqlSession 을 생성하여 들고있는 객체
Mapping File 에서 쿼리를 조회해서 쿼리를 수행하고 응답을 받아올 수 있는 세션 객체
DB 에서 조회하는 객체와 Java 프로그램의 객체간에 인터페이스를 정의하는 객체