- 이 문서는 구루비에서 작성하였습니다.
- 이 문서를 다른 블로그나 홈페이지에 게재하실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 출처 : http://wiki.gurubee.net/pages/viewpage.action?pageId=26741333&
- 구루비 지식창고의 모든 문서는 크리에이티브 커먼즈의 저작자표시-비영리-동일조건변경허락(BY-NC-SA) 라이선스에 따라 자유롭게 사용할 수 있습니다.
iBatis 소개
1. iBatis의 이해
1.1 iBatis 란
- iBatis은 객체와 DB 테이블간의 관계를 매핑시켜 효율적으로 데이터 처리를 할수있는 기능을 제공해 주는 ORM Framework이다.
- iBatis는 복잡한 객체 매핑을 지원하며, 한 줄의 JDBC 코드 없이 SQL문장을 처리 할 수 있다.
- iBatis = iBatis SQLMaps + iBatis DAO
- iBatis SQL Maps = Data Mapper Framework
장점
- SQL문과 소스 코드 분리로 소스 코드의 간결함을 유지 할 수 있다.
- 데이터베이스 자원에 대한 관리를 자동으로 해준다.
단점
- SQL문과 소스 코드가 분리된다는 것은 오히려 지나치게 많은 파일을 생성해서 관리상의 불편함을 초래할 수 있다.
- XML을 자동으로 reload 하기 위해서 별도의 작업이 필요하다.
1.2 ORM(Object-Relational Mappings) Framework란
- ORM 이란 객체와의 관계를 맵핑시킨다는 뜻이며, 객체와 DB 테이블과의 관계를 매핑시켜, 좀더 효율적으로 데이타를 처리하는 기능을 제공하는 프레임워크이다.
- ORM Framework는 데이터베이스 테이블과 객체와의 관계 설정을 자동으로 처리해 준다.
- 주요 ORM Framework로는 iBatis, Hibernate, Toplink 등이 있다.
1.3 iBatis와 JDBC의 비교
JDBC 프로그래밍
- JDBC 프로그래밍 DB Connection, Statement, ResultSet 객체를 생성하고 관리해야 한다.
JDBC 프로그램 예
conn = DriverManager.getConnection(url, user, pass); stmt = conn.prepareStatement(); String sql = "SELECT * FROM employees"; rs = stmt.executeQuery(sql); while (rs.next()) { rs.getString("..."); rs.getString("..."); ... } rs.close(); stmt.close(); conn.close();
iBatis 프로그래밍
- sqlMapClient 를 이용하여 SELECT 및 DML을 처리한다.
- SQL문장은 별도의 XML 파일로 관리 한다.
- JDBC 프로그래밍때보다 약 60% 정도 코딩양이 줄어든다.
iBatis 프로그래밍 예
sqlMapClient.queryForList("selectEmpList") <select id="selectEmpList" resultClass="emp"> SELECT * FROM emp </select>
2. Data Mapper의 이해
2.1 iBatis Data Mapper란
- iBatis Data Mapper는 자바빈즈 객체를 PreparedStatement 파라미터와 ResultSets으로 쉽게 맵핑할 수 있도록 한다.
- 아래 그림은 테이블과 객체를 SQL문으로 매핑하는 예이다.
![]() |
2.2 iBatis Data Mapper 구성도
- SqlMapConfig : iBATIS 환경설정 파일
- SQL Map 파일 : SQL을 담은 파일
- 입력 : 원시타입, POJO, Map
- 출력 : 원시타입, POJO, Map
![]() |
문서정보
- 이 문서는 구루비에서 작성하였습니다.
- 이 문서를 다른 블로그나 홈페이지에 게재하실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 출처 : http://wiki.gurubee.net/pages/viewpage.action?pageId=26741333&
- 구루비 지식창고의 모든 문서는 크리에이티브 커먼즈의 저작자표시-비영리-동일조건변경허락(BY-NC-SA) 라이선스에 따라 자유롭게 사용할 수 있습니다.