DBA

(레거시) iBATIS sql맵파일 (1) iBatis란?

Drider 2025. 8. 26. 14:10

요즘 개발자들은 MyBatis도 혀를 차는데, 이건 그것보다도 전의 기술인 iBATIS 입니다.

그래도 알아둬서 나쁠 건 없겠죠? 저는 다년간 iBATIS를 사용하는 프로젝트를 한 적도 있고요. 알아두면 써먹을 데가 있을 거라고 생각합니다.

 

 

1. iBatis (아이바티스)란 무엇인가?

 

iBatis는 SQL Mapper 프레임워크입니다.

 

SQL: 개발자가 데이터베이스와 통신하기 위해 사용하는 SQL 구문을 의미.

Mapper: '매핑(Mapping)해주는 도구', 뭔가를 다른 뭔가로 연결하고 짝을 지어주는 역할.

 

따라서 iBatis는 개발자가 직접 작성한 SQL 쿼리문과 Java의 객체(주로 VO, DTO)를 서로 연결(매핑)해주는 기능에 집중한 프레임워크입니다. 

 

복잡한 JDBC(Java Database Connectivity) 코드를 직접 작성하는 대신, SQL 쿼리는 별도의 XML 파일에 분리해서 작성하고, iBatis가 이 XML파일을 읽어 해당 SQL을 실행한 뒤 그 결과를 지정된 Java 객체에 자동으로 담아주는 역할을 합니다.

 

 

2. iBatis의 핵심 사용 목적

목적 1) SQL과 Java 코드의 분리

목적 2) JDBC의 반복적인 작업 제거(Boilerplate Code 감소)

Java에서 JDBC를 직접 사용하면 다음과 같은 반복적이고 지루한 코드를 계속 작성해야 합니다.

 

(1) 드라이버 로딩 (Class.forName())

(2) DB 연결 (Connection con = ...)

(3) SQL 실행 객체 생성 (PreparedStatement pstmt = ...)

(4) 파라미터 바인딩 (pstmt.setString(1, ...))

(5) 쿼리 실행 (ResultSet rs = ...)

(6) 결과 처리 (while(rs.next()) {...})

(7) 자원 해제 (rs.close(), pstmt.close(), con.close()를 finally 블록에서 처리)

 

iBatis는 이 모든 과정을 내부적으로 자동으로 처리해줍니다. 개발자는 SQL과 그 결과를 담을 객체만 지정하면 되므로 생산성이 크게 향상되죠.

 

목적 3) SQL에 대한 완전한 제어권 확보

iBatis (SQL Mapper)는 개발자가 SQL을 100% 직접 작성합니다. 따라서 가장 효율적인 방식으로 쿼리를 짤 수 있습니다. 복잡한 조인(JOIN), 서브쿼리, 데이터베이스 고유의 함수나 힌트(Hint) 등을 자유자재로 사용하여 SQL 성능을 극한으로 최적화 할 수 있습니다.

 

목적 4) 유연한 동적(Dynamic) SQL 기능 제공

사용자의 입력값이나 조건에 따라 실행되는 SQL 구문이 달라져야 할 때가 많습니다. 예를 들어, 검색어가 있을 때만 WHERE 절을 추가하는 경우입니다.

 

iBatis는 XML 파일 안에서 <if>, <choose>, <when>, <foreach> 같은 태그를 사용하여 이런 조건부 로직을 매우 깔끔하게 처리할 수 있습니다.