Hibernate
하이버네이트 ORM(Hibernate ORM)은 자바 언어를 위한 객체 관계 매핑 프레임워크이다. 객체 지향 도메인 모델을 관계형 데이터베이스로 매핑하기 위한 프레임워크를 제공한다.
하이버네이트는 GNU LGPL 2.1로 배포되는 자유 소프트웨어이다.
iBatis vs Hibernate
iBatis와 Hibernate 의 특성을 비교한 사이트1를 요약 정리해 보았습니다. 우문현답이란 표현이 딱 맞는거 같내요. 둘중에 뭐가더 좋아요? 라는 질문에 "두가지 모두 좋다. 각각의 장점을 프로젝트에 맞게 살려서 사용하라" 황희정승 같은 말을 하내요. 어쩌면 프레임웍이란 것이 유연한 사고가 필요한 부분인거 같습니다. 내것만을 고집하는 배타적인 사고로는 아무것도 할수 없다는 생각이 듭니다.
2개의 프레임웍의 분류
- Hibernate: Object relational mapping
- iBatis: SQL Mapper
Hibernate가 적절한 경우
- 새로운 프로젝트가 시작된 상태
- 객체 모델과 데이터베이스 디자인이 미완성인 상태
iBatis가 적절한 경우
- 3rd party databases에 접근하는 경우
- 레거시 데이터베이스와 연동이 필요한 경우
- 적업하고 디비 디자인이 부적절한 상태(지져분한 설계)시
- O/R Mapper가 이러한 상황을 제어할 능력이 없을수도 있음.
- SQL Mapper를 사용할 경우 객체 모델과 데이터 모델사이의 멥핑에는 아무런 제약 사항이 없음.
- sql문을 인력을 사용하여 수작업으로 tuning이나 최적화를 해야 할경우
Performance 측면의 비교
- 과거 embeded sql mapper
- 컴파일 랭귀지를 사용하여 제작됨
- 매우 빠른속도를 제공하고 시스템 환경에 최적화 되어 있음
- sql mapper에 비하여 다양한 일을 수행
- 대부분 reflection 방식 (hibernate),
- binary code inhencement 방식(JDO).
- hibernate의 향후 버전에서는 binary code inhencement방식을 채용
- reflection 방식을 사용한다는 측면은 iBatis와 공통점
프레임웍 성능비교는 무의미
- 프레임웍 성능이란 프레임웍을 어떻게 사용하는 방식에 따라서 결정
- 일반적으로 O/R mapper가 sql mapper에 비해서 훨씬더 효율적인 맵핑을 하고 수행전략을 수립.
- O/R mapper는 객체 모델과 데이터베이스 모델에 대한 광범위한 정보를 포함있음
- 간단한 CRUD 어플리케이션에 테이블-클래스 맵핑을 사용한다면 단순성과 성능이란 측면에서 O/R mapper많은 장점을 갖고 있음
- 복잡한 데이터 전송방식의 환경에서는 sql mapper가 효율적임
- Sql mapper가 더 효율적인 sql의 장점들을 표출할 수 있음
결론
- 하나이상을 선택하여 테스트 해보라.
- 프로젝트에 대한 컨셉에 따라 세밀하게 테스트 해보라.
- 모든 프로젝트의 특정은 모두 다르며 상황에 따라 Hibernate, iBATIS SQL Maps, TopLink, raw JDBC를 유연하게 사용해야 함
See also
Favorite site
- Hibernate. Everything data.
- Hibernate (framework) - Wikipedia
- 하이버네이트는 어떻게 자동 키 생성 전략을 결정하는가
- JPA/Hibernate를 버리세요 | GeekNews