iBatis 기초 개념
iBatis는 데이터베이스와 Java 애플리케이션 간의 데이터 매핑을 처리하는 지속성 계층 프레임워크입니다. Apache에서 6년간 운영된 후 Google Code에 이식되며 이름을 MyBatis로 변경했습니다. MyBatis는 JDK의 제네릭 및 어노테이션 기능을 활용해 구조를 단순화했습니다.
핵심 구조 비교
일반적인 Java EE 프레임워크는 전역 설정 파일을 통해 실행 환경을 정의하지만, 지속성 계층 프레임워크(예: Hibernate, JPA, iBatis 등)는 두 가지 주요 구성 요소를 포함합니다:
- 데이터 소스 및 트랜잭션 속성과 같은 일반적 설정 정보를 담은 전역 설정 파일
- 데이터베이스 테이블과 객체 간 매핑 정보를 포함한 맵핑 파일
MyBatis는 일부 설정을 어노테이션으로 대체할 수 있지만, 두 구성 요소 모두 필수적입니다. iBatis에서는 전역 설정 파일을 sqlMapConfig.xml로 명명했으나, MyBatis에서는 Configuration.xml로 사용됩니다.
구성 파일 형식 변화
iBatis와 MyBatis는 서로 다른 DTD(문서 유형 정의) 규칙을 사용합니다. 이는 iBatis에서
- iBatis:
- MyBatis:
트랜잭션 및 데이터소스 설정
iBatis의 예시:
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="${driver}"/>
</dataSource>
</transactionManager>
MyBatis의 예시:
<environments default="demo">
<environment id="demo">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="JDBC.Driver" value="${driver}"/>
</dataSource>
</environment>
</environments>
맵핑 파일 참조 방식
iBatis:
<sqlMap resource=... />
<sqlMap resource=... />
<sqlMap resource=... />
MyBatis:
<mappers>
<mapper resource=... />
<mapper resource=... />
</mappers>
이러한 변화는 단순히 기능 강화가 아닌, 구성 파일의 가독성과 유지보수성을 개선하기 위한 설계입니다.
코드 기반 구성
MyBatis는 XML 외에도 코드 기반 구성 방식을 지원합니다:
Reader reader = Resources.getResourceAsReader("Configuration.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession = sqlSessionFactory.openSession();
이 세 줄은 MyBatis가 데이터베이스 연결을 생성하고 SqlSession 인스턴스를 반환하는 표준 템플릿입니다.