MyBatis

Fox·2024년 1월 12일
0
post-thumbnail

MyBatis란?

  • Java객체와 SQL사이의 매핑을 담당하는 영속성 프레임워크이다.
  • JDBC를 직접 사용하면 수동으로 처리해야 하는 매핑을 훨씬 쉽게 처리할 수 있다.
  • SQL을 별도의 파일로 분리해서 관리하게 해 준다.


MyBatis 특징

  • SQL과 코드의 분리:

    • MyBatis는 SQL 쿼리문을 별도의 XML 파일로 분리하여 관리한다.
    • SQL문과 자바 코드를 분리해 코드의 가독성을 높이고 유지보수를 용이하게 할 수 있다.
  • 객체 매핑:

    • MyBatis는 SQL 쿼리의 결과를 자바 객체에 자동으로 매핑해 준다.
    • 이로 인해 복잡한 JDBC 코드를 작성할 필요 없이 간편하게 데이터베이스 작업을 수행할 수 있다.
  • 동적 SQL 지원

    • MyBatis는 if, choose 등의 조건문을 사용해 동적으로 SQL을 생성할 수 있다.
    • 이로 인해 SQL문의 재사용성을 높일 수 있다.

즉, MyBatis를 사용하면 SQL 문장을 작성하는 데 있어 더 유연하고,
자바 코드와 SQL 사이의 매핑을 효율적으로 처리할 수 있다.
또한, MyBatis는 JDBC 코드에서 발생할 수 있는 예외 처리와 같은 부분을 자동으로 처리해 준다.


MyBatis 구조

MyBatis DB Access Architecture

  • JDBC만을 사용하는 어플리케이션은 Application Modules에서 JDBC Interfaces를 바로 호출한다.
  • 하지만 MyBatis를 사용함으로 인해 JDBC Api를 감싸서 조금 더 편리하게 접근할 수 있도록 도와준다.

MyBatis를 사용하는 데이터 액세스 계층 흐름도

  • MyBatis는 Data Access Layer에서 사용하는 Framework다.
  • 컨트롤러 -> 서비스 -> Dao -> MyBatis 순서로 호출한다.

MyBatis 주요 Component

  1. SqlSessionFactoryBuilder:

    • 이는 MyBatis 설정 파일이나 설정 객체를 읽어 들여 SqlSessionFactory를 생성하는 역할을 한다.
    • 애플리케이션 실행 동안 한 번만 사용되며, 그 후에는 필요하지 않다.
  2. SqlSessionFactory:

    • SqlSessionFactory는 SqlSession 객체를 생성하는 팩토리이다.
    • 애플리케이션 실행 동안 한 번만 만들어지고, 여러 SqlSession 객체를 생성하는 데 사용된다.
  3. SqlSession:

    • SqlSession은 SQL 명령을 실행하고 모든 작업을 조정하는 객체이다.
    • SqlSession 객체는 필요할 때마다 SqlSessionFactory로부터 얻어지며, 작업이 끝난 후에는 반드시 닫혀야 한다.
  4. Mapper:

    • Mapper는 매핑된 SQL 문장을 바인딩하는 인터페이스다.
    • Mapper 인터페이스는 개발자가 직접 작성하며, SQL 쿼리와 결과 매핑을 위한 메서드를 정의한다.
    • MyBatis는 이 Mapper 인터페이스와 XML 매핑 파일을 연결하여 SQL 실행을 처리한다.
  5. Configuration:

    • Configuration은 MyBatis의 전반적인 설정을 담고 있는 객체이다.
    • 데이터베이스 연결 정보, 트랜잭션 관리 설정, 매퍼 파일 위치 등의 정보를 포함하고 있다.












참고 : https://terasolunaorg.github.io/guideline/5.2.1.RELEASE/en/ArchitectureInDetail/DataAccessDetail/DataAccessMyBatis3.html

profile
주니어개발자 Fox 입니다 🦊

0개의 댓글