[Spring Framework] 15강 - MyBaits 소개

seb Incode·2022년 4월 22일
0

Spring Framework

목록 보기
15/22

학습 내용

  • MyBatis 개요와 특징
  • MyBatis 주요 컴포넌트

학습 목표

  • 스프링 데이터 접근 기술 중 하나인 MyBatis의 개요에 대해 학습한다.
  • MyBatis의 주요 컴포넌트와 설정을 수행한다.

MyBatis 개요

MyBatis 개념

MyBatis는 자바 오브젝트와 SQL문 사이의 자동 Mapping 기능을 지원하는 Object Mapper다.

  • MyBatis는 SQL을 별도의 파일로 분리해서 관리하게 해주며, 객체-SQL 사이의 파라미터 Mapping 작업을 자동으로 해주기 때문에 많은 인기를 얻고 있는 기술이다.
  • MyBatis는 Hibernate나 JPA(Java Persistence API)처럼 새로운 DB 프로그래밍 패러다임을 익혀야 하는 부담이 없이, 개발자가 익숙한 SQL을 그대로 이용하면서 JDBC 코드 작성의 불편함도 제거해주고, 도메인 객체나 VO 객체를 중심으로 개발이 가능하다는 장점이 있다.

MyBatis는 유용한 DB 연동 라이브러리입니다. ORM는 아닙니다.
기존 JDBC를 사용한 개발자에게 친숙하면서도 나중에 Hibernate로 넘어가기에도 부담이 없습니다.

MaBatis의 특징

  1. 쉬운 접근성과 코드의 간결함
    • 가장 간단한 퍼시턴스 프레임워크
    • XML 형태로 서술된 JDBC 코드라고 생각해도 될 만큼 JDBC의 모든 기능을 MyBatis가 대부분 제공함
    • 복잡한 JDBC코드를 걷어내며 깔끔한 소스코드를 유지할 수 있음
    • 수동적인 파라미터 설정과 쿼리 결과에 대한 맵핑 구문을 제거할 수 있음

Java 코드를 최대한 줄이고, XML 파일에 선언함으로써 선언적으로 코딩할 수 있는 장점이 있습니다. 자원 생성 및 소멸, 트랜잭션 처리 등의 코드가 거의 필요 없어집니다.

  1. SQL문과 프로그래밍 코드의 분리
    • SQL에 변경이 있을 때마다 자바 코드를 수정하거나 컴파일 하지 않아도 됨
    • SQL 작성과 관리 또는 검토를 DBA와 같은 개발자가 아닌 다른 사람에게 맡길 수도 있음
  2. 다양한 프로그래밍 언어로 구현 가능
    • Java, C#, .NET, Ruby

MyBatis3와 MyBatis-Spring의 주요 컴포넌트

MyBatis와 MyBatis-Spring을 사용한 DB 엑세스 Architecture

MyBatis도 내부적으로 많이 추상화 되어 있습니다.
우리는 일반적으로 Repository쪽 즉, DAO Layer에서 MyBatis를 사용합니다.
MaBatis3+MyBatis-Spring 이 조합으로 동작합니다. (그림 노란색 참조)
저 라이브러리들을 통해 JDBC와 DataSource들을 이용합니다.
Driver를 통해 최종적으로 데이터베이스와 통신하는 구조입니다.

MyBatis3의 주요 컴포넌트

노란 박스들은 개발자가 직접 작성해야하는 부분입니다.
나머지는 MyBatis에서 기본적으로 제공해주고 있구요.
Mapping File은 SQL을 포함하고 있습니다.
Application은 DAO 부분으로 보시면 됩니다.
데이터베이스 작업을 수행하기 위해서는 SQLSession이 필요합니다.
SQLSession는 Connection을 포함하고 있기 때문입니다.

SQLSession 생성을 위해서는 Builder -> Config File 참조 -> SQLSession Factory 생성까지 사전 작업으로 해놓습니다.

그리고 요청이 들어올 때, Factory에서 SQLSession을 확보합니다.
이 SQLSession은 Connection을 포함하고 있구요.
이 SQLSession이 Mapping File을 실행합니다.

MyBatis3의 주요 컴포넌트의 역할

위에서 줄글로 설명했던 부분을 다시 표로 정리한 내용입니다.

MaBatis-Spring의 주요 컴포넌트

기존 MyBatis에서 기능을 확장한 버전이라고 생각하시면 됩니다.
SqlSessionTemplate이 스프링에서 확장한 SqlSession 모듈이 됩니다.
MaBatis-Spring은 Thread-safe하게 지원하기 때문에, 보다 편리합니다.

MyBatis-Spring의 주요 컴포넌트 역할

실습

1. MyBatis, MyBatis-Spring 의존성 추가

↑ pom.xml에 MyBatis, MyBatis-Spring 라이브러리를 추가합니다.

2. MyBatis 메인설정파일(=MyBatis-config.xml) 설정

↑ 해당 경로에 MyBatis 메인 설정 파일을 생성합니다.

↑ MyBatis 공식 사이트(https://mvnrepository.com/artifact/org.mybatis/mybatis-spring/2.0.7)에 들어가서 표시한 부분 복사합니다.

↑ MyBatis 메인 설정 파일에 붙여넣어 줍니다.

↑ configuration 태그 안 내용을 지워줍니다.
우리는 어차피 MyBatis-Spring을 사용해서 DB 연동을 하기 때문입니다.

3. SqlSessionFactory, SqlSession 설정

↑ DataSource.xml에 SqlSessionFactory Bean을 등록합니다.

↑ sqlSession Bean을 등록합니다.

4. Mapping 파일 설정

↑ mappers 폴더를 생성합니다. 이곳에 Mapping 파일들을 모아놓을 겁니다.

↑ help -> Eclipse Marketplace 클릭

↑ MyBatipse 설치

Mapping 파일도 XML인데, 직접 작성하기엔 까다롭습니다.
보다 편하게 작성할 수 있도록 도와주는 것이지요~

↑ 설치하면, 사진과 같이 MyBatis XML Mapper 파일 유형이 생깁니다.
클릭해서 파일을 만듭니다.

↑ article-mapper.xml 파일을 생성했습니다.
mapper 파일은 각 DAO와 1대1로 매칭되도록 만드는 것이 일반적이여서
articleDAO와 매핑될 mapper 파일을 만들었습니다.

다음 시간에 본격적으로 mapper 파일을 생성합니다. 끗 !

0개의 댓글