[ JAVA ] iBATIS & MyBATIS
iBATIS (아이바티스) -----> MyBATIS (마이바티스)
: 아파치 (아이바티스)팀이 구글코드로 이전하면서 명칭이 (새로이)변경되었다
SQL에 기반한 데이터베이스와 JAVA , .Net , Ruby 등을 연결 시켜주는 역활을 하는 영속성 프레임워크.
SQL 문장을 XML파일에 별도로 저장하고, 연결해주는 방식.
XML에 SQL 문을 작성하여, 간단하게 Mapping 을 가능하게 해주는데, 데이터베이스 자원을 간편하게 가져오기 위한 프레임워크
차이점
1 Ibatis에서 MyBatis로 변경된 이유
Ø Apache project팀에서 google code팀으로 이동하면서 명칭이 변경됨.
2 차이점
2.1 Java 요구 버전
Ø iBatis에서는 JDK 1.4 이상에서 사용 가능 MyBatis에서는 JDK 1.5 이상 사용 가능.
2.2 패키지 내부 구조가 변경되었음.
Ø ibatis : com.ibatis.*
Ø MyBatis : org.apache.ibatis.*
2.3 sqlMap.xml 내부 구조가 변경되었음.
Ø parameterMap 사용 못함. -> parameterType으로 대체.
Ø dtd가 변경 (“http://mybatis.org/dtd/mybatis-3-mapper.dtd”>
Ø 사용 용어의 변경
SqlMapConfig | Configration |
sqlMap | Mapper |
resultClass | resultType |
2.4 MyBatis lib 별도 제공
Ø Maven Dependency Information 예시
<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>
2.5 Annotation 도입
Ø sqlMapClient DI 설정 불필요
Ø 간편해짐
Ø Bean id sqlSesstionFactory, sqlSesstionTemplate만 지정하면 됨.
2.6 rowHandler 대체
Ø xml및 대량 데이터 처리를 위해 사용되었던 rowHandler가 삭제
Ø rowHandler -> resulthandler로 변경됨
Ø 자바 annotation을 사용하여 xml을 사용하지 않고 자바로만 할 수 있게 됨.
Ø 자바 선언 보다 xml 선언이 우선순위를 가짐.
2.7 네임스페이스 방식 변경
Ø ibatis : <sqlMap namespace=”User”>
Ø MyBatis : <mapper namespace=”myBatis.mapper.UserMapper”>
Ø 네임스페이스 사용은 필수, userStatementNameSpace설정 제거
2.8 동적 SQL – XML 엘리먼트
Ø If, choose(when, otherwise), trim (whre,set), foreach
2.9 동적 SQL – Provider annotation
Ø @SelectProvider(type=CommentSqlProvider.class, method=”selectCommentByCondition”)
2.10 캐시 지원.
2.11 (스프링 연동모듈) mapper 자동 검색
3 변경되거나 추가된 속성들 (종합)
4 iBatis | MyBatis | 비고 |
com.ibatis.* | org.apache.ibatis.* | 패키지 구조 변경 |
SqlMapConfig | Configration | 용어변경 |
sqlMap | mapper | 용어변경 |
sqlMapClient | sqlSession | 구문대체 |
rowHandler | resultHandler | 구문대체 |
resultHandler | SqlSessionFactory | 구문대체 |
parameterMap, parameterClass | parameterType | 속성 통합 |
resultClass | resultType | 용어변경 |
#var# | #{var} | 구문대체 |
$var$ | ${var} | 구문대체 |
<isEqual> , <isNull> | <if> | 구문대체 |
자세히 설명을 잘해주셔서 참고하였습니다. (출처: http://uwostudy.tistory.com/19 [UWO스터디])
* JDBC 와 같은 역활을 하지만, (아)마이바티스를 사용하는 이유는 ?
> 프로그래밍 소스와 SQL 쿼리문의 분리를 통해, 유지보수에 용이하다.
'Developer > JAVA' 카테고리의 다른 글
[JAVA/SPRING/eGovFrame] JAVA에서 Request Body 의 처리 - String toJsonArray / String toJson / JsonArray format String (2) | 2018.10.11 |
---|---|
[ JAVA ] Mysql & JAVA - JDBC 연동하기 (0) | 2018.08.31 |
[ JAVA ] Spring & Tomcat - 톰캣(8.0) 설치하기 & 프레임워크와 연동하기 (0) | 2018.08.27 |
[ JAVA ] (이클립스)톰캣 타임아웃 에러 (0) | 2018.08.24 |
[ JAVA ] GUI 툴로 자바프로그래밍 ( Swing, JFrame ) - JTable 사용자 수정 (0) | 2018.08.22 |