상세 컨텐츠

본문 제목

MyBatis에서 매퍼 XML과 주석 기반 구성의 차이점

Spring(프레임워크)

by 헬로제이콥 2025. 1. 17. 15:48

본문

MyBatis의 Mapper XML 대 Annotation 기반 구성

MyBatis는 SQL 쿼리를 정의하고 매퍼 인터페이스의 메서드와 연결하는 두 가지 방법을 제공합니다.

  1. 매퍼 XML: 이 접근 방식에서 SQL 쿼리는 별도의 XML 파일에 정의됩니다. 매퍼 인터페이스는 XML 파일에서 해당 SQL 쿼리를 참조하는 메서드 서명만 포함합니다.
  2. 주석 기반 구성: 이 접근 방식에서 SQL 쿼리는 주석을 사용하여 매퍼 인터페이스 메서드 내에서 직접 정의됩니다. 이 접근 방식은 별도의 XML 파일에 대한 필요성을 제거합니다.

 

두 가지 접근 방식의 주요 차이점을 요약한 표는 다음과 같습니다.

특징매퍼 XML주석 기반 구성
정의 위치 별도의 XML 파일 매퍼 인터페이스 메서드 내부
유지 보수성 더 자세한 설명, 별도의 파일 관리가 필요함 더 간결하고 유지 관리하기 쉬운 코드
유연성 복잡한 쿼리를 더 쉽게 관리 복잡한 쿼리의 경우 가독성이 떨어질 수 있습니다.
테스트 XML 변경 사항을 다시 로드해야 합니다. 테스트 중에 변경 사항이 즉시 반영되었습니다.
IDE 통합 코드 완성을 위한 IDE 지원 감소 코드 완성을 위한 더 나은 IDE 지원
 
 
 

예제 1: 매퍼 XML

XML
 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.StudentMapper">

  <select id="findAll" resultType="com.example.demo.entity.Student">
    SELECT * FROM student;
  </select>

</mapper>

 

 

예제 2: 주석 기반 구성

자바
 
package com.example.demo.mapper;

import com.example.demo.dto.StudentDto;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper // MyBatis mapper interface annotation
public interface StudentMapper {

  @Select("SELECT * FROM student")
  List<StudentDto> findAll(); // Method to find all students

  // Other methods for findById, insert, update, and delete
}

 

매퍼 XML과 주석 기반 구성 중에서 선택

매퍼 XML과 주석 기반 구성 중에서 선택하는 것은 프로젝트의 특정 요구 사항과 선호도에 따라 달라집니다. 다음은 몇 가지 일반적인 지침입니다.

  • 다음의 경우 매퍼 XML을 사용하세요:
    • 읽고 유지 관리하기 쉬운 복잡한 SQL 쿼리가 별도의 파일에 있는 경우
    • 매퍼 인터페이스에서 데이터 액세스 계층 로직을 비즈니스 로직과 분리하는 것이 좋습니다.
  • 다음의 경우 주석 기반 구성을 사용하세요:
    • 코드의 간결성을 중시하고 모든 MyBatis 구성을 매퍼 인터페이스 내에서 유지하는 것을 선호합니다.
    • 주석에 대한 변경 사항이 즉시 반영되므로, 개발과 테스트의 용이성을 우선시합니다.
    • 코드 완성 및 탐색을 위한 더 나은 IDE 지원의 이점을 누릴 수 있습니다.

궁극적으로 두 접근 방식 모두 동일한 결과를 효과적으로 달성할 수 있습니다. 가장 좋은 접근 방식은 팀의 선호도, 코딩 스타일 및 프로젝트 요구 사항에 따라 달라집니다.

관련글 더보기