전체 흐름 요약

[심플 버전]
1. Mapper Interface (개발자가 호출)
    ↓
2. SqlSession (SQL 실행 추상화)
    ↓
3. JDBC Connection (DB와의 통신)
    ↓
4. DB SQL 실행 결과 → 매핑

[상세 버전]
[1] Controller에서 Mapper 호출
    ↓
[2] Mapper 인터페이스 (프록시 객체)
    ↓
[3] SqlSession.select() → MappedStatement 조회
    ↓
[4] JDBC Connection 획득 (DataSource에서)
    ↓
[5] PreparedStatement 생성 및 바인딩
    ↓
[6] SQL 실행 → ResultSet 획득
    ↓
[7] TypeHandler/ResultMap을 통해 Java 객체로 매핑
    ↓
[8] SqlSession이 Mapper에게 반환

Mapper Interface

SqlSession

SqlSessionFactory

JDBC