본문 바로가기
Mybatis/기본 매핑과 SQL 작성

매퍼 인터페이스 vs 매퍼 XML

by DEVLIB 2025. 4. 16.
728x90

Mapper 인터페이스 vs Mapper XML 비교

항목
인터페이스 + XML (전통적인 방식) 인터페이스 + 어노테이션 (간단한 방식)
SQL 위치 Mapper.xml에 별도 분리 @Select, @Insert 등 어노테이션에 작성
가독성 복잡한 SQL 관리에 유리 짧은 SQL에 적합
재사용성 <sql>, <include>로 SQL 재사용 가능 SQL 재사용 어려움
유지보수 대규모 프로젝트에 적합 소규모, 간단한 CRUD에 적합
동적 SQL <if>, <choose> 등 풍부한 지원 매우 제한적
사용 난이도 구조화 필요 (XML + Interface 필요) 빠르고 쉬운 설정

구조 예시

① Mapper Interface + XML 방식

UserMapper.java

public interface UserMapper {
    User findUserById(int id);
}

 

UserMapper.xml

<mapper namespace="com.example.mapper.UserMapper">
    <select id="findUserById" resultType="User">
        SELECT * FROM users WHERE id = #{id}
    </select>
</mapper>

장점: SQL 분리로 유지보수 편리, SQL 재사용 가능
단점: XML 관리가 귀찮을 수 있음


② Mapper Interface + 어노테이션 방식

UserMapper.java

@Mapper
public interface UserMapper {

    @Select("SELECT * FROM users WHERE id = #{id}")
    User findUserById(int id);

    @Insert("INSERT INTO users (name, email) VALUES (#{name}, #{email})")
    void insertUser(User user);
}

장점: 빠르게 개발 가능, XML 불필요
단점: 쿼리 복잡도 증가 시 불편, 유지보수 어려움


어떤 방식을 선택해야 할까?

상황 추천 방식
간단한 CRUD, 프로토타입 개발 어노테이션 방식
복잡한 동적 SQL, 대규모 프로젝트 XML 방식
중장기 유지보수가 필요한 경우 XML 방식
외부 DBA와 협업이 필요한 경우 XML 방식 (쿼리 공유 용이)

결론 요약

  • XML 방식은 ‘관리를 위한 선택’, 특히 대규모 서비스에서 효과적입니다.
  • 어노테이션 방식은 ‘속도를 위한 선택’, 빠른 프로토타입 개발에 적합합니다.
  • 혼용도 가능: 간단한 건 어노테이션, 복잡한 건 XML로 병행 사용도 가능합니다.
LIST