본문 바로가기
TIL

TIL내일배움캠프 12주차 JPA심화 MyBatis

by 율량동박씨 2024. 7. 5.
오늘의 키워드
  • MyBatis
  • SqlSessionFactoryBuilder
  • SqlSessionFactory
  • SqlSession
  • Mapper Interface
  • Mapping File
  • JDBC 프로그래밍 단순화
  • SQL 쿼리 분리 관리

오늘의 내용

  • MyBatis : JDBC의 반복되는 코드를 줄이고 SQL 쿼리와 프로그램 코드를 분리해 관리하는 프레임 워크이다
    • JDBC 프로그래밍을 단순화한다
    • SQL 쿼리를 XML 파일에 작성해 코드와 SQL을 분리한다
    • 설정 부분을 줄이고 SQL문과의 연결을 통해 빠른 개발이 가능하다
    • 코드는 map 인터페이스와 SQL 쿼리 및 ResultSet 매핑을 위한 XML, annotation을 사용한다
    • DB 기능에 종속적이며 SQL을 직접 작성해야 한다
  • 실행 순서
    • 응용 프로그램이 SqlSessionFactoryBuilder를 통해 SqlSessionFactory를 빌드하도록 요청한다
    • SqlSessionFactoryBuilder는 MyBatis 구성 파일을 읽어 SqlSessionFactory를 생성한다
    • SqlSessionFactoryBuilder는 구성 파일의 정의에 따라 SqlSessionFactory를 생성한다.
    • 클라이언트가 응용 프로그램에 대한 프로세스를 요청한다
    • 응용 프로그램은 SqlSessionFactoryBuilder를 사용하여 빌드된 SqlSessionFactory에서 SqlSession을 가져온다
    • SqlSessionFactory는 SqlSession을 생성하고 이를 애플리케이션에 반환한다
    • 응용 프로그램이 SqlSession에서 매퍼 인터페이스의 구현 개체를 가져온다
    • 응용 프로그램이 매퍼 인터페이스 메서드를 호출한다
    • 매퍼 인터페이스의 구현 개체가 SqlSession 메서드를 호출하고 SQL 실행을 요청한다
    • SqlSession은 매핑 파일에서 실행할 SQL을 가져와 SQL을 실행한다
  • 주요 구성 요소
    • SqlSession Factory Builder: MyBatis 설정 파일을 읽어와서 설정 정보 기반으로 SqlSessionFactory를 생성하는 빌더 객체
    • MyBatis Config File: 매핑할 객체가 들어있는 패키지 경로와 Mapping File 목록을 지정하는 파일 (mybatis-config. xml)
    • SqlSession Factory: 설정에 맞게 SqlSession을 생성하여 들고 있는 객체
    • SqlSession: Mapping File에서 쿼리를 조회해서 쿼리를 수행하고 응답을 받아올 수 있는 세션 객체
    • Mapper Interface: DB에서 조회하는 객체와 Java 프로그램의 객체 간에 인터페이스를 정의하는 객체
    • Mapping File: Sqlsession이 실행하는 쿼리가 담긴 파일 (UserMapper.xml)
  • 장단점
    • 장점:
      • 쿼리 실행 전에 매개변수와 쿼리 결과 값의 변형을 정의할 수 있다
      • Namespace를 자유롭게 둘 수 있다
      • .xml 파일의 쿼리문 id와 mapper 메서드명을 일치시킬 필요가 없다
    • 단점:
      • SqlSession 객체를 주입받아야 하며, 쿼리문 실행 시 항상 호출해야 한다
      • 쿼리문 호출 시 SqlSession에 .xml 파일의 namespace와 쿼리문 id를 매개 변수로 넘겨야 한다

오늘의 회고

 프로젝트 마감 기한이 몇시간 남지 않아 마지막 스퍼트 중인데 QueryDSL을 테스트하는 과정에서 계속 null이 들어가는 오류가 발생해 해결 중인데 몇 시간째 해결을 못 해 번아웃이 와서 프로젝트를 잘 마무리할 수 있을지......