Hibernate 是「物件/關係對應」(Object/Relational Mapping)的解決方案,簡寫為ORM,簡單的說就是將 Java 中的物件與物件關係,映射至關聯式資料庫中的表格與表格之間的關係, Hibernate 提供了這個過程中自動對應轉換的方案。

2001年未 Hibernate 第一個版本發表,2003年6月8日 Hibernate 2 發表,並於年未獲得 Jolt 2004 大獎,後被 JBOSS 收納而成為其子項目之一,2005年3月 Hibernate 3 正式發表,當中有了一些重大的改變,這份文件將以之前 Hibernate 2 時撰寫的
文 件 為基礎,針對 Hibernate 3作重新整理的動作,所使用的版本為Hibernate 3.2。

基礎入門
        從一個最基本的物件關係映射自動化程式,瞭解 Hibernate 組成的基本元素,並進一步瞭解 Hibernate 的基礎語義、配置等概念。
  • O/R 映射入門
        第一個 Hibernate 程式很簡單,將一個物件映射至一個資料表。
    • 配 置 Hibernate
    • 第 一個 Hibernate
    • 第 二個 Hibernate
  • 基本配置
        瞭解一下配置文件、映射文件中各種元素的意義,在進入物件關係映射的學習之前,這是必備的基本功夫。
    • 配 置文件
    • 資 料庫連結
    • 映 射文件
    • 實作命名策略
  • 從 Session 到實體物件
        瞭解一下Session的作用,從中學習到實體物件的生命週期與資料識別。
    • Session
    • Session 管理
    • 實 體物件生命週期
    • 資 料識別(Data Identity)
  • Validatable、Lifecycle、Interceptor
        分別透過這三個介面,來進行資料驗證、於 CRUD(Create Retrieve Update Delete)作對應動作、攔截動作。
    • Lifecycle 介面、Validatable 介面
    • Interceptor 介面

資料查詢
        您可以使用Criteria物 件,以物件導向模型的方式查詢資料,或使用Hibernate推薦的HQL,必要時也可以自訂SQL語法。
  • Criteria 查詢
    • Criteria 基本查詢
    • Criteria 進階查詢
    • DetchedCriteria
  • HQL(Hibernate Query Language)
        這是 Hibernate 官方所推薦的查詢語言,接近 SQL 的語法,並提供更多的特性與封裝。
    • Query
    • 基 本查詢
    • where、 group by、order by 子句
    • 更 新、刪除
  • SQL 支援
        Hibernate 提供了對 SQL 的支援,並可以自行定義持久化方式。
    • 建立 SQL 查詢
    • 自定義 insert、update、delete


物件關聯映射(Object/Relational Mapping, ORM)
        學習 Hibernate,大部份的時間都在瞭解如何實現映射,而從中您也可以瞭解到不少關聯式資料庫的表格設計方式。
  • 實體映射
        來看看一些進階的實體映射議題。
    • 複 合主鍵(一)
    • 複 合主鍵(二)
    • Blob、 Clob
    • Blob、 Clob - Oracle 9i
    • Component 
  • 動態映射
       Hibernate 3引入了動態模型設定,適時的使用或混用,可以增加程式設計時的彈性。
    • 動 態模型(Dynamic Model)
    • 混 用靜態模型與動態模型
    • 使 用一個類別映射多個表格
  • 繼承映射
        在物件導向設計中,繼承關係是很常見的,但繼承與關聯式資料庫有著先天上的差異,繼承關係至表格的設計上有幾種方式。
    • 繼 承 - Table per concrete class with implicit polymorphism
    • 繼 承 - Table per concrete class with unions
    • 繼 承 - Table per class hierarchy
    • 繼承 - Table per  subclass
    • 繼 承 - 混合模式
  • 集合(collection)映射
        實體物件中包括多個值類型物件(value type object)時,需要另一個集合表格(collection table)來與之對應。
    • Set
    • Bag
    • List
    • Map
    • 集 合的排序
    • 內含 Component 的集合
  • 關係映射
        來看看實體與實體之間的多對一、一對多、一對一、多對多如何與Java物件之間進行映射。
    • 多 對一
    • 一 對多
    • 一 對一(唯一外鍵關聯)
    • 一 對一(主鍵關聯)
    • 多 對多

效能
  • 映射設定
    • cascade 的意義
    • 雙向關聯(inverse 的意義)
    • Persistence Context
    • 延 遲初始(Lazy Initialization)
    • 動 態 SQL 產生
    • Immutable 實體
  • 快取
        一級快取是在Session層次實作,二級快取可以跨越 Session 生命週期,Hibernate 透過第三方來實現二級快取,這邊也來看看 Query 的快取。
    • 簡 介快取(Session Level)
    • 二 級快取(Second- level)
    • Query 快取
    • Query.list ()、iterator()

交易
  • 交易入門
    • 簡 介交易管理
    • 基 於JDBC的交易管理
  • 並行控制
        對於交易的隔離層級(Isolation Level),Hibernate 透過兩種 Locking 機制來保證資料在操作過程中不會被干擾。
    • 簡 介隔離層級
    • 樂 觀鎖定 (Optimistic Locking)
    • 悲 觀鎖定 (Pessimistic Locking)

Hibernate Annotations 與 EntityManager
Hibernate實作了JPA規格,Hibernate Annotations與Hibernate EntityManager提供了與JPA/EJB3的相容性。
  • Hibernate Annotations
  • Hibernate EntityManager

Hibernate Tool
        透過一些Hibernate Tool來自動從映射文件生成資料庫表格,或從資料表反向生成映射文件或POJO。
  • 從映 射文件生成資料表
  • 從 資 料表生成映射文件與POJO

附錄
  • 從 Hibernate 2 到 Hibernate 3
  • Hibernate 官方網站
  • Java 視線論譠