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
'Mybatis > 기본 매핑과 SQL 작성' 카테고리의 다른 글
| 결과 매핑 (resultType, resultMap) (0) | 2025.04.17 |
|---|---|
| 파라미터 전달 방식 (단일값, Map, DTO) (1) | 2025.04.16 |
| select, insert, update, delete 쿼리 매핑 (0) | 2025.04.16 |