SPRING - MyBatis

이상해씨·2022년 11월 9일
0

웹 풀스택(JAVA)

목록 보기
53/54

✔MyBatis

1. MyBatis

◾개요

  • Java Object와 SQL문 사이의 자동 Mapping 기능을 지원하는 ORM Framework
    • SQL을 별도의 파일로 분리해서 관리.
    • Object-SQL 사이의 parameter mapping 작업을 자동으로 해줌.
    • SQL을 그대로 이용하며 도메인 객체나 VO 객체를 중심으로 개발 가능.

◾특징

  • 쉬운 접근성과 코드의 간결함
    • 간단한 persistence framework
    • JDBC 모든 기능을 MyBatis가 대부분 제공
    • JDBC 코드를 걷어내어 깔끔한 소스 코드 유지.
    • 수동적인 parameter 설정과 Query 결과에 대한 mapping 구문 제거
  • SQL문과 프로그래밍 코드의 분리
    • SQL 변경이 있을 때마다 자바 코드를 수정하거나 컴파일 하지 않아도 됨.
  • 다양한 프로그래밍 언어로 구현 가능
    • JAVA, C#, .NET, Ruby, ...

2. MyBatis-Spring

◾Mybatis와 MyBatis-Spring의 주요 Component

  • Mybatis와 Mybatis-Spring을 사용한 DB Access Architecture

◾Mybatis를 사용하는 Data Access Layer

◾MyBatis3의 주요 Component

◾MyBatis3의 주요 Component 역할

  • MyBatis 설정 파일(sqlMapConfig.xml) : 데이터베이스의 접속 주소 정보나 객체의 alias, Mapping 파일 경로 등의 고정된 환경 정보 설정.
  • SqlSessionFactoryBuilder : MyBatis 설정 파일을 바탕으로 SqlSessionFactory 생성.
  • SqlSessionFactory : SqlSession 생성.
  • SqlSession : SQL 실행이나 Transaction 관리 실행. thread마다 필요에 따라 생성.
  • mapping 파일(mapper.xml) : SQL문과 ORMapping 설정

◾MyBatis-Spring의 주요 Component

◾MyBatis-Spring의 주요 Component 역할

  • MyBatis 설정 파일(sqlMapConfig.xml) : Dto 객체의 정보 설정(Alias)
  • SqlSessionFactoryBean : MyBatis 설정 파일을 바탕으로 SqlSessionFactory 생성. Spring Bean으로 등록하여야 함
  • SqlSessionTemplate : SQL 실행이나 Transaction 관리 실행. Thread-safe하며 Spring Bean 등록 필요.
  • mapping 파일(mapper.xml) : SQL문과 ORMapping 설정
  • Spring Bean설정파일(beans.xml) : SqlSessionFactoryBean을 Bean에 등록할 때 DataSource 정보와 MyBatis Config 파일 정보, Mapping 파일 정보 함께 설정. SqlSessionTemplate를 Bean으로 등록.

3. Mapper Interface

◾Mapper Interface

  • mapping 파일에 기재된 SQL을 호출하기 위한 Interface
    • SQL을 호출하는 프로그램을 Type Safe하게 기술하기 위해 MyBatis 3.X부터 등장
    • Mapping 파일에 있는 SQL을 java interface를 통해 호출할 수 있도록 해줌.
    • 기존의 DAO 클래스를 대신하여 DAO 클래스가 사라짐. (DAO 인터페이스만 기술하여 이를 활용)
// JAVA
public interface mapper{
	Dto search(String id);
}
<mapper namespace="package.mapper">
  <select id="search" parameterType="String" resultType="Dto">
    SQL
  </select>
</mapper>

4. MyBatis-Spring 연동

◾개요

  • 스프링의 경우 컨테이너에 MyBatis 관련 빈을 등록하여 사용.
  • 트랜잭션을 @Transactional로 처리.
  • Spring 연동 라이브러리 필요
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis-spring</artifactId>
  <version>2.0.3</version>
</dependency>

◾DataSource 설정

  • 스프링 환경 설정 파일(application-context.xml)에 데이터소스 설정.
    • DataSource : 데이터베이스 연결 정보를 가진 객체
  • 스프링과 연동하면 데이터베이스 설정과 트랜잭션 처리는 스프링에서 관리.

◾트랜잭션 관리자 설정

  • transactionManager 아이디를 가진 빈은 트랜잭션을 관리하는 객체.
  • tx:annotation-driven을 통해 어노테이션으로 선언하도록 설정 가능.
    • @Transactional 어노테이션으로 트랜잭션 처리.

◾SqlSessionFactoryBean 설정

  • 스프링에서 SqlSessionFactory 객체를 생성하기 위해 SqlSessionFactoryBean을 빈으로 등록해야함.
  • 사용할 DataSource와 MyBatis 설정 파일 정보 필요

◾mapper 빈 등록

  • 스캐너를 통해 자동으로 Mapper 인터페이스를 등로갛거나 직접 등록.
  • mapperScannerConfigurer을 설정하면, Mapper 인터페이스를 자동으로 검색하여 빈으로 등록.
    • basePackage로 패키지를 설정하면, 해당 패키지 하위의 모든 Mapper 인터페이스 자동으로 등록.
  • MapperFactoryBean 클래스는 Mapper 인터페이스를 직접 등록할 때 사용.

◾MyBatis Configuration

  • DB 접속 정보 및 Mapper 관련 설정을 스프링 빈으로 등록하여 관리.
  • 일부 정보만 MyBatis 환경 설정에서 관리. (typeAlias, tpyeHandler 등)

◾데이터 접근 객체 구현

  • Repository : 데이터 접근 객체를 빈으로 등록하기 위해 사용하는 어노테이션.
  • Autowired : 사용하려는 데이터 접근 객체와 의존 관계 설정
profile
후라이드 치킨

0개의 댓글