iBatis와 MyBatis의 주요 차이점

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에서 태그를 루트로 사용하고, MyBatis는 을 사용하는 점에서 차이납니다. 또한, 설정 값 정의 방식도 달라졌습니다:

  • 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 인스턴스를 반환하는 표준 템플릿입니다.

태그: java MyBatis iBatis ORM XML구성

7월 25일 17:45에 게시됨