Hibernate

-- IT Trend 2011. 9. 22. 14:57
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
Hibernate는 객체 모델링(Object Oriented Modeling)과 관계형 데이터 모델링(Relational Data Modeling) 사이의 불일치를 해결해 주는 ORM 도구로, EJB의 Entity Bean과 같이 특정 플랫폼에 의존적인 제약을 정의하고 있지 않기 때문에 POJO 기반 개발이 가능하다. 또한 Java에서 지원하는 다양한 Collection 유형을 지원함으로써 객체 모델링을 관계형 모델링으로 매핑하는데 따르는 제약을 최소화하고 있다.

Hibernate의 특징을 살펴보면, 다음과 같다.

- Hibernate 기반 개발시 특정 DBMS에 영향을 받지 않으므로 DBMS가 변경되더라도 데이터 액세스 처리 코드에 대한 변경없이 설정 정보의 변경만으로도 올바르게 동작 가능하다.

- SQL을 작성하고 SQL 실행 결과로부터 전달하고자 하는 객체로 변경하는 코드를 작성하는 시간이 줄어들기 때문에 개발자는 비즈니스 로직에 집중할 수 있게 되고, 개발 시간이 단축될 수 있다.

- JDBC Api를 사용한 코드의 양이 줄어들고, 매핑 파일을 별도로 관리하게 되면서 DB 정보 변경으로 인해 영향을 받는 부분 또한 감소한다.

- 다음과 같은 접근 방법을 취함으로써, DBMS에 대한 접근 횟수를 줄여나가 궁극적으로 어플리케이션의 성능 향상을 도모한다.
  • 기본적으로 필요 시점에만 DBMS에 접근하는 Lazy Loading 전략 채택
  • Session 종료 시에 변경 사항에 대해 일괄 batch 처리
  • 1st Level Cache, 2nd Level Cache를 활용하여 DBMS에 대한 재접근없이 Caching된 객체 사용
- 대부분의 개발자가 어플리케이션의 데이터 액세스 로직을 개발하기 위해 DTO(Data Transfer Object), DAO 패턴을 사용하는데 익숙하기 때문에 데이터와 로직을 가진 객체를 설계하는데 익숙하지 못하다는 단점을 가지고있다.


Conceptual Architecture

Hibernate 기본 구성은 다음 그림과 같다.

위 그림에서와 같이 Hibernate이 DBMS 기반의 어플리케이션 수행을 하기 위해 필요한 주요 구성 요소는 Persistent Objects, Hibernate Properties, XML Mapping이며, 각각은 다음과 같은 역할을 수행한다.

- Persistent Objects : Persistent Object는 어플리케이션 실행 여부와 상관없이 물리적으로 존재하는 데이터들을 다룬다. 일반적으로 DBMS 데이터를 이용하는 어플리케이션을 개발할 경우 어플리케이션의 비즈니스 레이어에서 특정 DBMS에 맞는 SQL을 통해 어플리케이션의 데이터를 처리하게 된다. 그러나 Hibernate 기반의 어플리케이션에서는 Persistent Object를 중심으로 하여 어플리케이션의 데이터와 DBMS 연동이 가능해진다.
 
- Hibernate Properties : Hibernate 실행에 관련된 속성 정보를 포함하고 있는 파일로, hibernate.cfg.xml 또는 hibernate.properties 형태로 정의할 수 있다. 주로 DBMS, Logging, Cache, Mapping File 정보 등을 다루고 있다.

- XML Mapping : Persistent Object과 특정 테이블 사이의 다양한 매핑 정보를 명시하기 위한 XML 파일이다. Hibernate는 Hibernate Mapping XML을 기반으로 하여 실행할 SQL을 생성하고 있다.

출처 : http://dev.anyframejava.org/anyframe/doc/core/3.1.0/corefw/guide/hibernate-introduction.html

PS) 출처에서 개념부분만 발췌했으며, 자세한 사항은 출처를 참고바란다.
PS) 닷넷에서는 N-hibernate (Nhibernate)로 사용할 수 있다.

'-- IT Trend' 카테고리의 다른 글

Apache Ant  (0) 2012.09.06
Milestone  (0) 2012.03.09
QRCode  (0) 2011.09.05
Log4net  (0) 2011.09.01
Smart Work  (0) 2011.06.29
posted by 어린왕자악꿍