Java - iBatis
Ibatis
- 더 빠른 jdbc코딩을 위한 일반화 된 프레임워크
- sql 매퍼 + dao 프레임워크
- ibatis는 데이터베이스에 있는 자원들을 보다 편리하게 가져오기 위한 프레임워크
- XML서술자를 사용해서 간단하게 자바빈즈를 PreparedStatement 의 바인드 변수인 파라미터와
ResultSet으로 맵핑 시켜주는 기능으로 SQL Maps, ORM이라고 한다.
- iBatis 데이터 매퍼 프레임워크는 관계형 데이터베이스에 접근할 때 가독성, 유지보수성, 생산성 등을 향상시켜준다.
==> sql에 기반한 데이터베이스와 자바, 닷넷, 루비 등을 연결시켜주는 역할을 하는 영속성 프레임워크
프로그램의 소스코드에서 sql문장을 분리하여 별도의 xml파일로 저장하고 이 둘을 연결시켜주는 방식으로 작동
특징 : 성능이 우세함
1) 간결함과 쉬운 접근성
2) 생산성의 향상 (훨씬 더 적은 코드로 jdbc처럼 작동)
3) 성능 : 구조적강점 - 데이터접근속도 높여주는 Join 매핑
4) SQL문장과 프로그래밍 코드의 분리 (작업의 분배 - 팀을 세분화 하는것을 도움 -> 파라미터 값만 변경되지 않으면 소스 수정X)
5) 이식성 : 어떤 프로그래밍 언어로도 구현이 가능하다
6) 데이터베이스 접근 클래스와 비즈니스 로직을 담은 클래스의 분리 : dao패턴이 이런일을 담당, ibatis는 dao계층 구현을 위한 유틸리티 성격이면서 동시에 best practice 역할도 수행한다.
7) 자주 쓰이는 데이터를 변경되지 않는 동안에 임시 보관(Cache) : xml설정만으로도 캐시를 할 수 있다.
8) 트랜잭션과 쓰레드 관리
* 데이터매퍼
iBatis 데이터매퍼 API는 프로그래머에게 자바빈즈 객체를 PreparedStatement 파라미터와 ResultSets으로 쉽게 매핑할 수 있도록 한다. 이는 자바코드의 20%를 사용하여 JDBC기능의 80%제공하는 간단한 프레임워크라는 뜻이다.
데이터 매퍼는 자바빈즈, Map구현체, 원시래퍼타입(String, Integer..) 그리고 SQL문을 위한 XML문서를 매핑하는
XML서술자를 사용하는 매우 간단한 프레임워크를 제공한다. 데이터 매퍼가 관리하는 생명주기는 다음과 같다.
1. 파라미터(자바빈즈,Map 또는 원시래퍼)로써 객체를 제공한다.
파라미터 객체는 update문에서 입력값을 세팅하기 위해 사용되거나 쿼리문의 where절을 셋팅하기 위해서 사용된다.
2. 매핑된 구문을 실행한다. 이 단계는 PreparedStatement 인스턴스를 생성할 것이고 제공된 파라미터 객체를 사용해서 파라미터를 셋팅한다. 그 후 구문을 실행하고 ResultSet으로부터 결과 객체를 생성한다.
3. update의 경우에 영향을 미친 rows의 숫자를 반환한다. 조회작업인 경우에 한 개의 객체 또는 컬렉션 객체를 반환한다. 파라미터처럼 결과 객체는 자바빈즈, Map 원시타입 래퍼또는 XML이 될 수 있다.