Java2EE Framework/iBATIS 2.0

iBATIS 2.0 프레임워크 설명

본클라쓰 2010. 6. 11. 16:53

 iBATIS 2.0 은 두 개의 라이브러리로 구성되어 있다. ibatis-common-2.jar 라이브러리와 ibatis-sqlmap-2.jar 라이브러이이다. iBATIS의 특성은 설정 파일을 통한 SQL문을 수행하는 것이 기본 개념이다.

 

 일반적인 JDBC 프로그래밍은 테이블과 DTO(Data Transfer Object)가 있을 때 컨넥션을 생성하여 PreparededStatement 객체를 생성하거나, Statement 객체를 생성하여 프로그래밍 했다면, iBATIS는 컨넥션 생성과 쿼리문을 수행하는 부분을 설정파일을 통해 관리하는 것이다.

 

 IBATIS의 실제 쿼리문을 수행하는 코드를 보면 다음과 같다.

 

import java.io.Reader; 

 

import com.ibatis.common.resource.Resources; 

import com.ibatis.sqlmap.client.SqlMapClient;

import com.ibatis.sqlmap.client.SqlMapClientBuilder; 

 

// 중략... 

  

String resource = "example/sqlMap-config.xml";

reader = Resources.getResourceAsReader( resource );
SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient( reader );

 

Integer personPk = new Integer(5);
Person person = (Person)sqlMap.queryForObject("getPerson", personPk);

 

 쿼리문이 상당히 간단해 진 것을 확인 할 수 있다. 이는 SQLmap 설정 파일을 읽어 들여 쿼리문을 수행하여 결과를 얻는 부분을 iBATIS가 담당하고 있기 때문이다.

 

 

iBATIS의 이점

 

 iBATIS는 오늘날 가장 간단한 퍼시스턴스 프레임워크 중 하나다. 간단함이 iBATIS의 설계 목표이고 핵심이다. iBATIS는 JDBC와 SQL를 계속 유지하으로써 이러한 간결성을 확보하게 되었다. iBATIS는 훨씬 적은 코드로 JDBC 처럼 동작하기 때문에 자바 개발자들이 다루기 쉬우며, JDBC에 적용되는 거의 모든 지식이 iBATIS에서도 잘 적용된다. iBATIS는 XML 형태로 서술된 JDBC 코드라고 생각하면 된다.

 

 또한, 생산성이 향상된다. 일반적인 프레임워크는 장황한 코드를 제거하고 복잡한 구조적 문제를 해결하면서 공통적인 작업을 다루기 위해 존재한다. iBATIS는 개발자의 생산성을 높여준다.

 

 

■ iBATIS의 단점

 

 모든 프레임워크는 규칙과 제약을 중심으로 만들어졌다. JDBC와 같은 저수준 프레임워크는 매우 유연하고 완전한 기능을 제공하지만, 사용하기 어렵고 너무 지루하다. 객체 관계 매핑 툴과 같은 고수준 프레임워크는 사용하기 좀 더 쉽고 불필요한 작업을 줄여주지만, 더 많은 가정과 제약 조건들 때문에 이를 적용할 수 있는 애플리케이션이 더 적어지게 된다. iBATIS는 중간 수준의 프레임워크다. JDBC 보다는 고수준이지만 객체 관계 매퍼보다는 저수준이다. 이로 인해 iBATIS는 특별한 애플리케이션 셋에 적합한 특별한 위치를 점한다.

 

 하지만 iBATIS도 단점이 존재하는데 다음과 같은 상황에서는 사용을 자제하는 것이 좋다. 첫번째, 애플리케이션의 SQL 문을 동적으로 생성해야 할 때는 iBATIS는 좋지 못한 선택이다. iBATIS는 매우 강력한 동적 SQL 생성 기능을 통해 고수준의 쿼리 기법, 동적 update 구문 생성 기능까지도 지원한다. 하지만, 시스템의 SQL 구문이 동적으로 생성된다면 그냥 JDBC를 사용하거나 혹은 자신만의 프레임워크를 직접 만들어 사용하는 것이 좋다. iBATIS가 가지는 힘의 대부분은 개발자들에게 SQL 구문을 직접 수작업으로 작성하고 관리할 수 있는 완벽한 자유를 준다는 점에 있다. 애플리케이션에서 대부분의 SQL 구문이 SQL 자동 생성 클래스 같은 것으로부터 동적으로 생성된다면 iBATIS의 이러한 장점은 금방 무의미해진다.

 

 또한, 관계형 데이터베이스를 사용하지 않는다면 iBATIS 를 사용하지 않는 것이 좋다. iBATIS는 관계형 데이터베이스 모델을 기초로 하고 있기 때문에 관계형 데이터베이스를 사용하지 않는다면 iBATIS를 사용하지 않는 것이 좋다.

'Java2EE Framework > iBATIS 2.0' 카테고리의 다른 글

이클립스 iBatis DOCTYPE 에러 처리  (0) 2010.06.14
iBATIS 2.0 동작방법  (0) 2010.06.12