Skip to content

iBATIS vs MyBATIS #
Find similar titles

iBATIS vs MyBATIS #

Java는 JDBC API를 제공하지만, JDBC를 이용하면 1개의 class에 반복된 코드가 존재하게 되고, 한 파일에 Java 언어와 SQL 언어가 함께 있어서 재사용성이 안 좋아지는 단점이 있다. iBATIS와 MyBATIS는 데이터베이스에 있는 자원을 보다 편리하게 가져오기 위한 개발 프레임워크로 JDBC의 단점들을 개선하였으며 개발자가 작성한 SQL 명령어와 자바 객체를 매핑해주는 기능을 제공하며, 기존에 사용하던 SQL 명령어를 재사용할 수 있다. 관계형 데이터베이스에 접근하는 데 필요한 일련의 자바 코드를 현저히 줄일 수 있으며 간단한 XML 기술을 사용하여 SQL 문을 Map에 간편하게 매핑할 수 있다.

iBATIS #

iBATIS는 SQL에 기반을 둔 데이터베이스와 자바, 닷넷(.NET), 루비(Ruby) 등을 연결해주는 역할을 하는 영속성 프레임워크이다 이러한 연결은 프로그램의 소스코드에서 SQL 문장을 분리하여 별도의 XML 파일로 저장하고 이 둘을 서로 연결해주는 방식으로 작동한다.

MyBATIS #

MyBATIS는 자바 퍼시스턴스 프레임워크의 하나로 XML 서술자나 annotation을 사용하여 저장 프로시저나 SQL 문으로 객체들을 연결한다. MyBatis는 아파치 라이선스 2.0으로 배포되는 자유 소프트웨어이며 iBATIS 3.0의 포크로 iBATIS의 원 개발자들이 포함된 팀에 의해 유지 보수되고 있다.

iBATIS vs MyBATIS #

iBATIS MyBATIS
최소 JDK버전 1.4 1.5
패키지 구조 com.ibatis.* org.apache.ibatis.*
SqlMap.xml 에서 변경사항 parameterMap parameterType
element 명칭 변경사항 SqlMapConfig SqlMap Configuration mapper
namespace 속성 선택 필수

pom.xml 설정 #

  1. iBATIS

    <dependency>
        <groupid>org.apache.ibatis</groupid>
        <artifactid>ibatis-sqlmap</artifactid>
        <version>2.3.4.726</version>
    </dependency>
    
  2. MyBATIS

    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.2.2</version>
    </dependency>
    
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>1.2.0</version>
    </dependency>
    

Dynamic Query #

iBATIS
태그 설명
<isEqual> property 값이 같을 때 quary 실행
<isNotEqual> property 값이 같지 않을 때 quary 실행
<isGreaterThan> property 값이 비교 값보다 큰 경우 quary 실행
<isLessEqual> property 값이 비교 값보다 작거나 같은 경우 quary 실행
<isPropertyAvaliable> property 값이 유효하면 quary 실행
<isNotPropertyAvaliable> property 값이 유효하지 않으면 쿼리 실행
<isNull> property 값이 null일 경우 quary 실행
<isNotNull> property 값이 null이 아닐 경우 quary 실행
<isEmpty> property 값이 비어있으면 quary 실행
<isNotEmpty> property 값이 비어있지 않으면 quary 실행
<isParameterPresent> parameter 가 있으면 quary 실행
<isNotParameterPresent> parameter 가 없으면 quary 실행
<iterate> 배열 타입의 파라미터를 받을 때 활용
<dynamic> 하위 태그에 일치하는 내용이 존재할 경우 where 절을 붙인다.
MyBATIS
태그 설명
<if>와 <choose>, <when>, <otherwise> 일반 개발언어의 if or if~else와 동일
<foreach> 배열 타입의 파라미터를 받을 때 활용
<where>, <trim> iBATIS의 <dynamic>과 같은 조건에 따라 where 절을 추가할 때 사용
<set> 동적으로 update 구문을 만들 때 사용
<bind> 변수를 생성하는 태그

참조 사이트 #

0.0.1_20140628_0