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 |