MyBatis의 Mapper XML 대 Annotation 기반 구성
MyBatis는 SQL 쿼리를 정의하고 매퍼 인터페이스의 메서드와 연결하는 두 가지 방법을 제공합니다.
두 가지 접근 방식의 주요 차이점을 요약한 표는 다음과 같습니다.
정의 위치 | 별도의 XML 파일 | 매퍼 인터페이스 메서드 내부 |
유지 보수성 | 더 자세한 설명, 별도의 파일 관리가 필요함 | 더 간결하고 유지 관리하기 쉬운 코드 |
유연성 | 복잡한 쿼리를 더 쉽게 관리 | 복잡한 쿼리의 경우 가독성이 떨어질 수 있습니다. |
테스트 | XML 변경 사항을 다시 로드해야 합니다. | 테스트 중에 변경 사항이 즉시 반영되었습니다. |
IDE 통합 | 코드 완성을 위한 IDE 지원 감소 | 코드 완성을 위한 더 나은 IDE 지원 |
예제 1: 매퍼 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과 주석 기반 구성 중에서 선택하는 것은 프로젝트의 특정 요구 사항과 선호도에 따라 달라집니다. 다음은 몇 가지 일반적인 지침입니다.
궁극적으로 두 접근 방식 모두 동일한 결과를 효과적으로 달성할 수 있습니다. 가장 좋은 접근 방식은 팀의 선호도, 코딩 스타일 및 프로젝트 요구 사항에 따라 달라집니다.
이클립스 유용한 단축키 정리 (0) | 2025.01.22 |
---|---|
프로젝트 목표: 스프링 부트, MyBatis를 이용하여 학생 정보를 CRUD(Create, Read, Update, Delete) 할 수 있는 REST API를 구현합니다. (0) | 2025.01.17 |
스프링부트와 MyBatis를 이용한 CRUD 프로젝트 (0) | 2025.01.17 |
API, JPA, MyBatis: 언제 어떤 것을 사용해야 할까요? (2) | 2025.01.17 |
스프링 MVC를 이용한 API 개발: 주요 어노테이션 (0) | 2025.01.17 |