본문 바로가기

Development/etc

hibernate VS ibatis

Hibernate

- Object Relational Mapping 계열

   a. Database 엔티티(일종의 테이블 row)와 자바 객체를 동기화 하는 역할을 담당

   b 모든 sql문은 프레임웍에서 생성되고 실행됨
   d. sql작업이 필요할 경우 HSQL을 통하여 이루어짐(EJB-QL과 유사)
   e. HSQL은 실제적인 sql의 앞단에서 처리되는 객체지향 쿼리 랭귀지

Application class RDBMS table 간의 매핑을 담당

-  객체 지향 설계 경험이 좋을 때 유리

- 개발자의 SQL 작성을 줄이는 것이 가능

- 잘 구성된 table 구조에 유리

- 데이터 모델과 객체 모델간의 의존성이 상대적으로 강함


iBatis

SQL / Data Mapping 계열 persistence framework

   a. 자바객체를 실제 sql 문장에 맵핑.(자바 코드에서 sql 관련부분 제거) 

   b. Sql 문장은 자동 생성되는 것은 아니고 개발자가 기술해 줌
   c. 맵핑 자체는 데이터베이스이 엔티티와 관계(relationship)에 독립적임.(mapping 자체가 sql문에 국한)
   d. 실제적으로 모든 임베디드 sql 시스템은 모두 sql mapper로 간주가능

Application class  RDBMS query parameter, result간의 매핑을 담당

JDBC 개발 경험이 좋을 때 유리

      - 개발자의 SQL 최적화가 가능

      - 복잡한 table 구조에 유리

      - 데이터 모델과 객체 모델간의 의존성이 상대적으로 약함


상황에 따라 효율성

- hibernate가 적절한 경우

* 새로운 프로젝트가 시작된 상태

* 객체 모델과 데이터베이스 디자인이 미완성인 상태

- ibatis가 적절한 경우

    * 3rd party databases에 접근하는 경우 
    * 레거시 데이터베이스와 연동이 필요한 경우 
    * 적업하고 디비 디자인이 부적절한 상태(지져분한 설계)시 
    * O/R Mapper가 이러한 상황을 제어할 능력이 없을수도 있음. 
    * SQL Mapper를 사용할 경우 객체 모델과 데이터 모델사이의 멥핑에는 아무런 제약 사항이 없음. 
    * sql문을 인력을 사용하여 수작업으로 tuning이나 최적화를 해야 할경우


'Development > etc' 카테고리의 다른 글

Qt Creator에서 갑자기 실행이 되지 않을때.....  (0) 2013.10.23
Web 구조  (0) 2013.10.01
영속성이란..  (0) 2013.09.18
Svn vs Git  (0) 2013.09.13
컴파일러와 인터프리터  (0) 2013.09.13