Clinton Begin이라는 사람에 의해 2001년에 시작된 프로젝트. 원래는 암호 관련 소프트웨어 개발에 초점을 맞춘 프로젝트였다. iBATIS에 의한 첫 산출물은 Secrets라는 이름의 툴이다.그러다가 2002년 초반에 마이크로소프트가 .NET이 J2EE에 비해 10배 빠르고 4배 생산성이 좋다는 논문을 발표했는데, 이에 iBATIS 팀은 (역자주: 열받아서..) 같은해 7월 1일 JPetStore 1.0을 릴리스했다. 그럼으로해서 자바가 .NET보다 생산성뿐 아니라 아키텍처면에서도 이점이 있음을 보여줬다.그런데, JPetStore가 아주 재밌는 persistene layer를 사용했는데, 이것이 오픈소스 진영의 관심을 끈 것이다. 그후 관련된 질문과 요구가 Data Mapper(SQL Maps)와 DAO라는 두개의 프레임워크로 구성된 새로운 관점에 집중한 iBATIS 프로젝트의 전이를 가져온 것이다.ibatis는 원래 암호 관련 프로젝트로 시작되었음을 알려주는 이름이다. 즉 "internet"과 "abatis"의 합성어인데,, abatis는 적의 공격을 방어하기 위한 장애물이라는 뜻이니,,, 인터넷를 지키는데 쓰는 암호를 의미하는 것이다.
출처 -
http://www.javajigi.net/pages/viewpage.action?pageId=5570
============================================================================================
iBATIS 는 SQL 쿼리 를 POJO ( Plain Old Java Object )에 매핑하는 지속성 프레임 워크이다. SQL 쿼리는 XML 파일에 두는 것으로 일단 응용 프로그램과 분리된다. 결과 객체 매핑은 자동 또는 반자동으로한다.
iBATIS의 기본 개념은 SQL 쿼리를 XML 파일에 배치함으로써 관계 데이터베이스 에 액세스하는 데 필요한 많은 Java 코드를 크게 줄일 것이다.
예를 들어 데이터베이스에 PRODUCT (PRD_ID : INTEGER , PRD_DESCRIPTION : VARCHAR )라는 테이블이 있다고하여 Java 객체 com.example.Product (id : int , description : String )이 있다고한다.product POJO의 특정 PRD_ID 의 PRODUCT 내용을 저장하려면 다음을 XML SQL 맵에 삽입한다.
<SELECT ID = "getProduct"
parameterClass = "java.lang.Long"
resultClass = "com.example.Product" >
select
PRD_ID as id,
PRD_DESCRIPTION as description
from
PRODUCT
where
PRD_ID = # value #
</ select >
매개 변수 개체를 설정하고 결과 객체에 저장하는 Java 코드는 다음과 같다.
Product resultProduct = sqlMapClient. queryForObject ( "getProduct" , 123 ) ;
# value # 는 쿼리에서 전송되는 Long 가리킨다. 매개 변수를 Java 객체에 대해서, 해당 개체의 속성에서 얻은 값을 유사한 # 기법을 사용하여 쿼리에 삽입할 수있다. 예를 들어 파라미터 클래스가 com.example.Product하고 그것 id라는 속성이있는 경우 # value #는 # id #로 치환있다. sqlMapClient는 com.ibatis.sqlmap.client.SqlMapClient 인스턴스이다.
iBATIS의 창시자는 Java 5에 실망 을 표명하고있어, 2006 년 12 월 2.3.0을 릴리스하고 나서 2.3.1과 2.3.2 2008 년 4 월에 출시 하기까지 오랜 시간이 걸렸다 것은 무관하지 않다.
2010 년 6 월 16 일, 공식 사이트에서 Apache 소프트웨어 재단의 활동 중지 및 프로젝트 포크 , 및 개발자의 이적이 발표되었다. 새로운 프로젝트는MyBatis 라고있다.
관련 항목 [ 편집 ]
외부 링크 [ 편집 ]
===============================================================================================
MyBatis 는 Java 및 . NET Framework 에서 사용 가능한 XML 또는 주석 을 사용하여 저장 프로 시저 및SQL 문을 객체 와 붙이면 지속성 프레임 워크 이다. Apache License 2.0을 사용하여 오픈 소스 소프트웨어로 제공되고있다.
이전 iBATIS 로 알려져 있었다.
특징 [ 편집 ]
MyBatis 다른 O / R 매핑 프레임 워크와는 달리 데이터베이스 와 객체를 매핑하는 것이 아니라, SQL 문장과 객체의 매핑을한다. 따라서 MyBatis은 기존 환경과 비정규 데이터베이스 또는 SQL 문장의 실행을 완전히 제어하고 싶은 경우에 좋은 선택이된다.
MyBatis하여 데이터베이스 액세스 코드는 JDBC 에 의한 것보다 훨씬 간단하다. 보통의 경우, SQL 문장의 실행은 한 줄의 코드로 완료한다. 흔히 볼 수있는 연결을 닫는 누설이나 검색 결과 1 건 기대하고 있음에도 불구하고 초과 버리는 문제를 억제있다.
MyBatis의 가장 큰 특징은 XML 작성하는 SQL 문장을 일반 개체 와 함께하는 것이다.
또한 MyBatis는 개체 및 데이터베이스를 매핑뿐만 아니라, SQL 문장의 인터페이스 방법 (매퍼)를 만들 수있다. 이 경우는 DI 프레임 워크와 결합하여 MyBatis API에 대한 종속성을 제거할 수있다. 이 때문에 Spring Framework , Google Guice 와 협력을 지원하고있다.
MyBatis에서는 데이터 캐시 를 지원하고있다. XML 매핑 파일에 약간의 구문을 추가하면 캐시를 사용하는 것이 가능하다. MyBatis 캐시는 OSCache ,Ehcache 그것 Hazelcast 과의 연계를 지원하고있다.
사용 방법 [ 편집 ]
SQL 문장은 XML 파일 또는 주석 에 작성할 수있다. 다음 예제는 XML을 사용하여 "Blog"를 반환 SELECT 문의 정의이다.
<? XML version = "1.0" encoding = "UTF-8" ?>
<! DOCTYPE mapper PUBLIC "- / / mybatis.org / / DTD Mapper 3.0 / / EN" "http://mybatis.org/dtd/mybatis -3-mapper.dtd ">
<mapper namespace = "org.mybatis.example.BlogMapper" >
<SELECT ID = "selectBlog" parameterType = "int" resultType = "Blog" >
select * from Blog where id = # {id}
</ select >
</ mapper >
이 SELECT 문은 다음과 같이 실행한다.
Blog blog = ( Blog ) session. selectOne ( "org.mybatis.example.BlogMapper.selectBlog" , 101 ) ;
매퍼 인터페이스는 새로운 MyBatis의 특징 문자열의 사용을 피하고 IDE 코드 지원 기능을 활용할 수있다.
매퍼 DAO (Data Access Objects)에 비슷하지만 그것과는 달리 인터페이스 에서 하나 이상의 각 SQL 문장에 대응하는 메소드로부터 구성된다. 인터페이스의 구현은 런타임에 MyBatis 동적 프록시가 생성하는 데 필요하지 않습니다.
BlogMapper mapper = session. getMapper ( BlogMapper. class ) ;
Blog blog = mapper. selectBlog ( 101 ) ;
역사 [ 편집 ]
관련 항목 [ 편집 ]
외부 링크 [ 편집 ]