[SPRING]MyBatis

Date:     Updated:

카테고리:

태그:

[21] MyBatis

21.1. MyBatis 개요

  • 자바코드 안의 SQL구문을 별도의 xml로 분리하는 역할을 한다.
    • config.xml / Mapper.xml로 분리하고 구분한다.
  • 자바 코드로부터 SQL문을 분리해서 관리한다.
  • 매개변수 설정과 쿼리 결과를 읽어오는 코드를 제거
  • 작성할 코드가 줄어들어서 생산성 향상, 유지보수 편리
  • SQL을 별도의 파일로 분리해서 관리
    • 객체-SQL 사이의 파라미터들을 Mapping 작업을 자동으로 해준다.
  • JPA(Java Persistence Api)나 Hibernate 등 DB 프로그래밍과 병행된 개발 기술이다.
  • 퍼시스턴스 프레임워크
    • JDBC의 모든 기능을 MyBatis가 대부분 제공한다.
    • 복잡한 JDBC 코드를 걷어내며 슬림한 소스코드 유지 가능하다.
    • SQL에 변경이 있을 때마다 자바 코드를 수정하거나 컴파일 하지 않아도 된다.

21.2. SqlSessionFactoryBean과 SqlSessionTemplate

  • SqlSessionFactory
    • SqlSession을 생성해서 제공하는 역할을 한다.
  • SqlSession
    • SQL 명령을 수행하는데 필요한 메서드를 제공하는 역할을 한다.
  • SqlSessionFactoryBean
    • SqlSessionFactory를 spring에서 사용하기 위한 빈(Bean)이다.
  • SqlSessionTemplate
    • SQL 명령을 수행하는데 필요한 메서드를 제공한다.
    • thread-safe (멀티스레드에 안전)

21.3. MyBatis 주요 컴포넌트

  • MyBatis 설정파일 (Config.xml)
    • 데이터베이스의 접속 주소 정보, Mapper 파일의 경로 등 고정된 환경정보 설정.
<typeAliases>
  <typeAlias alias="BoardDto" type="kr.co.heart.domain.BoardDto" />
</typeAliases>

=> DAO에서 SQL문으로 값을 전달 할 때 또는 SQL문을 실행한 후 가져온 값을 DAO로 전달할 때 사용할 빈을 생성함.

  • mapping 파일 (Mapper.xml)
    • SQL문과 OR Mapping을 설정
  • SqlSessionFactory
    • SqlSession을 생성해서 제공
  • SqlSession
    • SQL 명령을 수행하는데 필요한 메서드를 제공하는 역할을 한다.
    • 핵심적인 역할을 하는 클래스
  • SqlSessionFactoryBean
    • SqlSessionFactory를 spring에서 사용하기 위한 빈(Bean)이다.
    • MyBatis 설정파일을 바탕으로 SqlSessionFactory를 생성한다.
  • SqlSessionTemplate
    • SQL 명령을 수행하는데 필요한 메서드를 제공한다.
    • thread-safe (멀티스레드에 안전)
    • 핵심적인 역할을 하는 클래스
    • SqlSession 인터페이스를 구현
    • Spring Bean으로 등록해야 한다.

21.4. SqlSession의 주요 메서드

  • T selectOne(String statement) 또는 T selectOne(String statement, Object parameter)
    • 하나의 행을 반환하는 select에 사용한다.
    • parameter로 sql에 binding될 값을 제공

    • List selectList(String statement) 또는 List selectList(String statement, Object parameter)
      • 여러 행을 반환하는 select에 사용한다.
      • parameter로 sql에 binding될 값을 제공
    • Map<K,V> selectMap(String statement, String KeyColumn) 또는 Map<K,V> selectMap(String statement, String KeyColumn, Object parameter)
      • 여러 행을 반환하는 select에 사용한다.
      • KeyColumn에 Map의 Key로 사용할 컬람을 지정
    • int insert(String statement) 또는 int insert(String statement, Object parameter)
      • insert문을 실행하고 insert된 행의 갯수를 반환한다.
    • int delete(String statement) 또는 int delete(String statement, Object parameter)
      • delete문을 실행하고 delete된 행의 갯수를 반환한다.
    • int update(String statement) 또는 int update(String statement, Object parameter)
      • update문을 실행하고 update된 행의 갯수를 반환한다.

21.5. 구현 순서

  • 테이블 생성
  • Mapper XML & DTO 작성
  • DAO 인터페이스 구현
  • Service 인터페이스 구현
  • Controller 인터페이스 구현
  • JSP 구현

SPRING 카테고리 내 다른 글 보러가기

댓글 남기기