MyBatis
자바 언어용으로 개발된 오픈소스 ORM프레임 워크입니다.
데이터 베이스와 객체 지향 프로그래밍 언어 간의 관계를 매핑해 주는 역할을 합니다. MyBatis는 SQL 쿼리와 객체를 매핑하기 위한 XML이나 애노테이션 기반의 설정을 통해서 동작합니다.
특징
SQL 객체 매핑
XML 또는 어노테이션 기반 매핑으로 SQL 쿼리를 XML 파일 또는 어노테이션을 통해 정의하고, 이를 자바 객체와 매핑하여 데이터 베이스 조작이 가능하게 합니다.
ORM 지원으로 데이터 베이스 레코드와 자바 객체 간의 매핑을 쉽게 수행할 수 있습니다.
유연성 간결성
SQL과 자바 코드 분리로 인해 XML 또는 어노테이션을 통해 SQL을 작성하고, 자바 코드와 분리하여 유지 보수 및 관리를 용이하게 합니다.
동적 SQL 지원으로 조건에 따라 동적으로 SQL을 생성할 수 있으며 유연한 쿼리 작성이 가능합니다.
매개변수 매핑으로 인해 메서드 파라미터를 SQL문의 매개변수에 매핑하여 편리한 데이터 전달이 가능하고 반복적인 쿼리의 성능을 향상시키기 위해 캐싱 기능을 지원해 줍니다.
MyBatis 구조
응용 프로그램 컴파일 시 My Batis의 빈 생성흐름
SqlSessionFactoryBuilder를 통한 SqlSessionFactory 생성 요청
애플리케이션이 시작되기 전 SqlSessionFactoryBuilder는 MyBatis 구성파일을 기반으로 SqlSessionFactory를 생성합니다. 이 과정에서 설정된 데이터베이스 연결 정보 및 매퍼 설정이 포함됩니다.
SqlSessionFactory생성
SqlSessionFactoryBuilder는 MyBatis 구성 파일을 해석하여 SqlSessionFactory를 생성합니다. 이 객체는 데이터베이스와의 세션을 관리하고 SQL 매퍼와의 상호작용을 지원합니다.
SqlSessionFactory를 스프링 빈으로 등록
스프링에서 이 SqlSessionFactory를 빈으로 등록할 수 있습니다. 이를 통해 나중에 필요한 곳에서 주입받아 사용 가능합니다.
클라이언트 요청에 대한 프로세스 흐름
클라이언트의 요청 수신
클라이언트가 애플리케이션에 요청을 보냅니다.
SqlSessionFactory에서 SqlSession 획득
응용 프로그램은 SqlSessionFactory를 통해 SqlSession을 가져옵니다. 이는 데이터베이스 세션을 나타내며, SQL 쿼리를 실행하기 위한 객체입니다.
Mapper interface의 구현 객체 획득
SqlSession에서 Mapper Interface의 구현 객체를 가져옵니다. 이는 MyBatis가 자동으로 생성한 객체로, 실제 SQL 쿼리를 실행하는 데 사용합니다.
Mapper Interface 메서드 호출
응용 프로그램은 이제 Mapper Interface의 메서드를 호출합니다. 이는 데이터베이스와 상호작용 하는데 필요한 로직이 들어가 있습니다.
SqlSession을 통한 SQL 실행 요청
Mapper Interface의 구현 객체는 SqlSession을 통해 SQL 실행을 요청합니다. 이때 필요한 SQL은 매핑 파일에서 가져오 실행됩니다.
'Spring(Boot & FrameWork)' 카테고리의 다른 글
엔티티 매핑 (0) | 2023.12.13 |
---|---|
Validation (0) | 2023.12.06 |
AOP (0) | 2023.11.30 |