Spring 전자정부 프레임워크 기반 SI 실무

MyBatis

MyBatis

MyBatis 개요와 특징

  • MyBatis는 Java Object와 SQL문 사이의 자동 Mapping 기능을 지원하는 ORM Framework
    • MyBatis는 SQL을 별도의 파일로 분리해서 관리
    • Object - SQL 사이의 parameter mapping 작업을 자동으로 해줌
    • MyBatis는 Hibernate나 JPA(Java Persistence API)처럼 새로운 DB 프로그래밍 패러다임을 익혀야 하는 부담 없이, 개발자가 익숙한 SQL을 그대로 이용하면서 JDBC 코드 작성의 불편함을 제거해 주고, 도메인 객체나 VO 객체를 중심으로 개발이 가능.
  • MyBatis 특징
    • 쉬운 접근성과 코드의 간결함
      • 가장 간단한 persistence framework
      • XML형태로 서술된 JDBC 코드라 생각해도 될 만큼 JDBC의 모든 기능을 MyBatis가 대부분 제공
      • 복잡한 JDBC 코드를 걷어내며 깔끔한 소스코드를 유지
      • 수동적인 parameter 설정과 Query 결과에 대한 mapping 구문을 제거
    • SQL문과 프로그래밍 코드 분리
      • SQL에 변경이 있을 때마다 자바 코드를 수정하거나 컴파일 하지 않아도됨
      • SQL 작성과 관리 또는 검토를 DBA와 같은 개발자가 아닌 다른 사람에게 맡길 수 있음
    • 다양한 프로그래밍 언어로 구현가능
      • JAVA, C#, .NET, RUBY 등

MyBatis와 MyBatis-Spring의 주요 Component

  • MyBatis와 MyBatis-Spring을 사용한 DB Access Architecture mybatis
  • MyBatis를 사용하는 Data Access Layer mybatis
  • MyBatis 3의 주요 Component mybatis
    • 역할
    파일설명
    MyBatis 설정 파일데이터베이스의 접속 주소 정보나 객체의 alias, Mapping 파일의 경로 등의 고정된 환경 정보를 설정
    SqlSessionFactoryBuilderMyBatis 설정 파일을 바탕으로 SqlSessionFactory를 생성
    SqlSessionFactorSqlSession을 생성
    SqlSession핵심적인 역할을 하는 Class로 SQL 실행이나 Transaction 관리를 실행. SqlSession 오브젝트는 Tread-Safe하지 않으므로 thread마다 필요에 따라 생성
    mapping 파일SQL 문과 ORMapping을 설정
  • MyBatis-Spring의 주요 Component mybatis
    • 역할
    파일설명
    MyBatis 설정 파일Dto 객체의 정보를 설정한다.(Alias)
    SqlSessionFactoryBeanMyBatis 설정 파일을 바탕으로 SqlSessionFactory를 생성. Spring Bean으로 등록해야함.
    SqlSessionTemplate핵심적인 역할을 하는 Class로 SQL 실행이나 Transaction 관리를 실행. SqlSession interface를 구현하며 Tread-Safe하다. Spring Bean으로 등록해야 함.
    mapping 파일SQL 문과 ORMapping을 설정
    Spring Bean 설정파일SqlSessionFactoryBean을 Bean에 등록 할 때 DataSource 정보와 MyBatis Config 파일 SqlSessionTemplate을 Bean으로 등록.

MyBatis 3의 Mapper Interface

  • Mapper Interface
    • Mapper Interface는 SQL을 호출하는 프로그램을 Type Safe을 호출하기 위한 Interface
    • Mapping 파일에 있는 SQL을 java interface를 통해 호출할 수 있도록 해줌
  • Mapper Interface를 사용하지 않았을 경우
    • mybatis
    • Mepper Interface를 사용하지 않으면
      • SQL을 호출하는 프로그램은 SqlSession의 method의 argument에 문자열로 namespace + “.” + SQL ID로 지정
      • 문자열로 지정하기 때문에 오타에 의한 버그가 생기거나, IDE에서 제공하는 code assist를 사용할 수 없음.
  • Mapper Interface를 사용했을 경우
    • mybatis
    • UserMapper Interface는 개발자가 작성
    • packagename+”.”+interfaceName+”.”+methodName이 namespace + “.” + SQL ID가 되도록 Namespace와 SQL ID를 성정해야 함.
    • Namespace 속성에는 package를 포함한 Mapper Interface의 이름을 작성
    • SQL ID에는 mapping하는 method의 이름을 지정

© 2020. All rights reserved.

SIKSIK