[Spring] | Mybatis

제롬·2022년 10월 24일
0

MyBatis

목록 보기
1/3

MyBatis란?

Java Object와 SQL문 사이의 자동 Mapping 기능을 지원하는 ORM 프레임워크이다.

MyBatis는 SQL을 그대로 이용하면서 JDBC의 코드작성 불편함을 제거해주고, 도메인 객체나 VO객체를 중심으로 개발이 가능하다.

이때 MyBatis는 SQL을 별도의 파일로 분리해서 관리하며 Object-SQL 사이의 parameter mapping 작업을 자동으로 해준다.

Mybatis의 특징

  • 쉬운 접근성과 코드의 간결함.
    • 가장 간단한 persistence 프레임워크
    • XML 형태로 서술된 JDBC 코드라 생각해도 될 만큼 JDBC의 모든 기능을 MyBatis가 대부분 제공
    • 복잡한 JDBC 코드를 걷어내서 코드가 간결하다.
    • 수동적인 parameter 설정과 Query 결과에 대한 mapping 구문을 제거.
  • SQL문과 코드의 분리
    • SQL에 변경이 있을때마다 자바코드를 수정하거나 컴파일하지 않아도 된다.
  • 다양한 프로그래밍 언어로 구현가능.
    • Java, C#, .Net 등.

MyBatis 아키텍처

DB vender에서 제공하는 JDBC Driver가 있다.
JDBC만을 사용하는 어플리케이션은 Application Modules에서 JDBC 인터페이스를 바로 호출하지만 JDBC Api를 감싸서 개발자가 조금 더 편리하게 접근할 수 있도록 도와주는것이 MyBatis이다.

서비스에서 DAO를 호출하고 DAO에서 MyBatis를 사용하게 된다.

[MyBatis와 MyBatis-Spring을 사용한 DB Access 아키텍처]

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

MyBatis는 Data Access Layer에서 사용하는 프레임워크이다.
Controller에서 Service를 호출하고 Service가 DAO 계층에 있는 메소드를 호출하면 DAO에서 MyBatis를 호출한다.

[MyBatis를 사용하는 데이터 액세스 Layer]

MyBatis의 주요 Component와 동작

MyBatis의 주요 Component로는 SqlSession Factory Builder, SqlSession Factory, SqlSessio이 있다.

MyBatis 설정 파일(XML)을 작성해두고 아래 그림에서 보라색 박스부분들만 개발자가 작성하면 된다.

[MyBatis3의 주요 컴포넌트]

[MyBatis 동작하는 순서]

  1. Application에서 SqlSession Factory Builder를 호출한다.
  2. SqlSession Factory Builder가 설정 파일(Config file)을 읽고 Factory를 생성해준다.
  3. 개발자가 DB에 insert하거나 read하는 메서드를 호출하면 SqlSession FactorySqlSession을 생성하고 개발자가 작성한 Application 코드에 반환한다.
  4. SqlSession은 개발자가 작성한 SQL문을 호출해주는 기능을 한다.

MyBatis의 주요 Component 역할

  • MyBatis 설정파일(sqlMapConfig.xml):
    • 데이터베이스의 접속 주소 정보나 객체의 alias, Mapping 파일의 경로 등의 고정된 환경 정보를 설정
  • SqlSessionFactoryBuilder:
    • MyBatis 설정 파일을 바탕으로 SqlSessionFactory를 생성.
  • SqlSessionFactory:
    • SqlSession을 생성한다.
  • SqlSession:
    • 핵심적인 역할을 하는 클래스로서 SQL 실행이나 트랜잭션을 관리한다. SqlSession 객체는 Thread-Safe하지 않으므로 Thread마다 필요에 따라 생성한다.
  • Mapping 파일(.xml):
    • SQL문과 ORMapping을 설정한다.

MyBatis-Spring의 주요 Component와 역할

  • MyBatis 설정파일:
    • Dto(VO) 객체의 정보를 설정한다.(Alias)
  • SqlSessionFactoryBean:
    • MyBatis 설정 파일을 바탕으로 SqlSessionFactory를 생성한다. (Spring Bean으로 등록해야 한다.)
  • SqlSessionTemplate:
    • 핵심적인 역할을 하는 클래스로서 SQL 실행이나 트랜잭션을 관리한다. SqlSession Interface를 구현하며, 객체는 Thread-Safe하다. (Spring Bean으로 등록해야 한다.)
  • Mapping 파일(.xml):
    • SQL문과 ORMapping을 설정한다.
  • Spring Bean 설정파일(.xml)
    • SqlSessionFactoryBean을 Bean에 등록할 때 DataSource 정보와 MyBatis Config 파일정보, Mapping 파일의 정보를 함께 설정한다. (SqlSession Template을 Bean으로 등록)

0개의 댓글