포스트 목록

2016년 9월 8일 목요일

Hibernate 정리 - 1 (개념)

이 글은 혼자 정리하기 위한 글입니다. 참조만 해주세요.

1. 하이버네이트(Hibernate) 란?

하이버네이트는 ORM(Object-Relational Mapping) 의 한 종류 이다. 
ORM은 데이터베이스에 저장된 데이터와 프로그램의 객체를 매핑하는 프로그램 기술이다.
또한, 간단하게 데이터를 생성하고, 조작하고, 접근 할 수 있게 해준다.


2. 하이버네이트를 쓰면 좋은점

1. 오픈소스이며 가볍다.
2. 빠른 성능을 보장한다. 2단계 캐시를 지원한다.
3. 데이터베이스 쿼리에 독립적이다. 
   (Oracle이나 MySQL 등 상이한 데이터베이스에 대해 같은 결과를 보장받는다.)
4. 자동으로 테이블 생성 기능을 제공한다.
5. 간단한 조인을 수행한다. 
6. 쿼리 캐시와 데이터베이스 상태와 쿼리의 통계에 대한 기능을 지원한다.


3. 하이버네이트의 구조

하이버네이트는 수많은 Persistent 객체들을 포함한다.
(SessionFactory, TransactionFactory, ConnectionFactory, Session, Transaction ... 등등)

크게는 다음과 같이 4단계 레이어로 구성된다.


이를 좀 더 세분화 하면 다음과 같다.
Mapping File과 Configuration File의 고수준 구조이다.


하이버네이트는 수많은 Session Factory, Session, Transaction 등과 JDBC(Java Database Connectivity), JTA(Java Transaction API), JNDI(Java Naming Directory Interface) 를 사용한다.


4. 하이버네이트의 구성 요소

하이버네이트를 생성(사용)하기 위해서는 하이버네이트의 구성 요소를 알고 있어야 한다.

 1) SessionFactory
     Session 과 application 의 Connection Provider 에 대한 Factory 이다. 
     그것은 (Session 또는 Connection Provider 를 말하는 것 같다.) 2단계 캐시를 유지한다.
     org.hibernate.SessionFactory 인터페이스는 Session 객체를 반환 하는 메소드를 제공한      다.

 2) Session
     Session 객체는 application 과  데이터베이스(데이터가 저장 된)의 인터페이스이다.
     짧은 생존주기를 가지고 있으며, JDBC Connection 을 포장 하고 있다.
     (쿼리를 직접적으로 수행하는 것 같다. 그래서 생존주기(트랜잭션??)가 짧으며, JDBC           Connection 을 포장한다는 표현을 한 것 같다.)
     1단계 캐시를 유지하며, org.hibernate.Session 인터페이스는 insert, update, delete 
     그리고 Transaction, Query, Criteria 를 생성하는 factory 메소드를 제공한다.

 3) Transaction
     Transaction 는 작업의 단위에 대한 객체이다. 선택적으로 사용 가능하다.
     org.hibernate.Transaction 인터페이스는 트랜잭션 관리에 대한 메소드를 제공한다.

 4) ConnectionProvider
     JDBC Connection 에 대한 factory 이다. DriverManager 나 DataSource 의 추상 클래스
     선택적으로 사용 가능하다.

 5) TransactionFactory
     Transaction 에 대한 factory 이다. 선택적으로 사용 가능하다.


댓글 없음:

댓글 쓰기