-
iBatis와 MyBatis프로그래밍 기초 공부 2023. 1. 24. 17:31
ibatis
- ORM 프레임워크
- 객체와 DB 테이블간의 관계를 매핑시켜 효율적으로 데이터를 처리할 수 있는 기능을 제공
- 복잡한 객체 매핑을 지원하며, 한 줄의 JDBC 코드 없이 SQL문장을 처리 가능
역사
- 2001년 클린턴 비긴에 의해 iBatis 프로젝트가 처음 시작
- 암호화 소프트웨어 솔루션 개발에 중점
- iBatis는 Secrets를 첫 출시
- Secrets : 자바로 작성, 오픈소스 라이선스로 배포
- 2002년 7월 iBatis 1.0 공개
- 2004년 6월 iBatis 2.0 출시
- 2010년 5월 iBatis 3.0 공개
- 2010년 6월 iBatis 팀 Apahce Software Foundation에서 Google code로 이전
- iBatis에서 MyBatis로 명칭 변경
특징
- 간결함과 쉬운 접근성
- 여러 프레임워크나 객체관계맵핑툴에 비해 가장 간단한 퍼스스턴스 프레임워크임
- SQL문을 XML에 그대로 서술함
- 기존 SQL문 처리에 익숙한 개발자들이 접근하기 쉬움
- DB 관리자와 SQL 프로그래머 양 쪽 모두 이해하기 용이함
생산성의 향상
JDBC와 SQL의 특성을 유지하면서도 훨씬 더 적은 코드로 JDBC와 비슷하게 작동
자바코드의 일부를 사용하여 JDBC기능의 많은 부분을 제공하는 간단한 프레임워크
성능
성능최적화 기법을 지원
페이징 처리된 데이터 리스트를 읽어와 사용할 때 불필요한 수천개의 행을 DB로부터 한꺼번에 가져오지 않음
애플리케이션의 성능을 향상시킬 수 있음
SQL문장과 프로그래밍 코드의 분리
팀을 세분화 할 수 있도록 함
SQL문과 자바코드의 분리로 인하여 자바 개발자는 Query문을 신경쓰지 않아도 됨
SQL문이 변경되더라도 파라미터 값만 변경되지 않는다면 자바코드에서 수정할 부분이 없음
이식성
Java, C#, Ruby등 어떠한 프로그래밍 언어로도 구현 가능
DB접근 클래스와 비즈니스 로직을 담은 클래스의 분리 즉, DAO 패턴이 위의 글을 가능하게 함
장점
- SQL문과 소스 코드 분리로 소스 코드의 간결함을 유지 가능
- DB자원에 대한 관리를 자동으로 해줌
단점
- SQL문과 소스 코드가 분리되는 것이 지나치게 많은 파일을 생성해서 관리상의 불편함을 초래할 수 있음
- XML을 자동으로 reload하기 위해 별도의 작업 필요
MyBatis
- iBatis의 버전이 변경되면서 MyBatis로 변경
- Apache project팀에서 google code팀으로 이동하면서 명칭이 변경
차이점
- iBatis는 JDK 1.4이상에서 사용 가능, MyBatis는 JDK 1.5이상에서 사용 가능
- (MyBatis 3.2 이상 버전은 JDK1.6이상 요구)
- iBatis는 com.ibatis.* 패키지를 사용
- MyBatis는 ort.apache.ibatis.* 패키지를 사용
- sqlMap.xml 파일이 Mapper.xml로 변경되어 내부구조도 바뀜
- 기존의 parameterMap에서 parameterType으로 변경됨
- dtd역시 http://mybatis.org/dtd/mybatis-3-mapper.dtd로 로 변경
- 사용 용어 또한 변경되었음
MyBatis 아키텍처
- DB vender에서 제공하는 JDBC Driver
- JDBC만을 사용하는 어플리캐이션은 Application Modules에서 JDBC Interfaces를 바로 호출하지만 JDBC API를 감싸서 개발자가 조금더 편리하게 접근할 수 있도록 도와주는 것
- 서비스에서 DAO를 호출하고 DAO에서 Mybatis를 사용하게됨
MyBatis 주요 컴포넌트
Application에서 SqlSession Factory Builder를 호출하고 SqlSession Factory Builder가 Config File을 읽고 Factory를 생성해줌
개발자가 DB에 insert하거나 Read하는 메서드를 호출하면 SqlSession Factory가 SqlSession를 생성하고 개발자가 작성한 Application코드에 반환해줌
SqlSession은 개발자가 작성한 SQL문을 호출해주는 기능을 해준다고 생각하면됨- MyBatis 설정파일(SqlMapConfig.xml) : 데이터베이스의 접속 주소 정보나 Mapping 파일의 경로 등의 고정된 환경정보를 설정
- SqlSessionFactoryBuilder : MyBatis 설정 파일을 바탕으로 SqlSessionFactory를 생성
- SqlSessionFactory : SqlSession을 생성
- SqlSession : 핵심적인 역할을 하는 클래스로서 SQL 실행이다 트랙잭션 관리를 실행한다. SqlSession 오브젝트는 Thread-Safe 하지 않으므로 thread마다 필요에 따라 생성
- Mapping 파일(user.xml) : SQL문과 OR Mapping을 설정
'프로그래밍 기초 공부' 카테고리의 다른 글
Stream (0) 2023.02.02 스크럼이란? (0) 2023.01.25 애자일과 워터폴 (0) 2023.01.19 Race Conditions, Deadlocks, Process Starvation (0) 2023.01.16 그래프와 트리 (0) 2023.01.10