一、Hibernate 簡介
1. 官方網址: http://www.hibernate.org
2. 作者是 Gavin King (大部分的程式由他本人獨力完成)。
3. 是一個免費的 O/R Mapping Framework。
4. 使用時不需要安裝額外的 container。
5. 是 JBoss 的 一項專案,所以對 JBoss 的相關產品有較好的整合性 ( 特別的功能 )。
6. Java 與 .NET 都可以來使用 Hibernate。
二、Java 運作環境 與 Hibernate 的支援關係
1. J2SE1.4 / J2EE 1.4 : 可使用 Hibernate Native API、Core、XML Metadata、Quickstart。
2. Java SE 5 : 可使用 Hibernate Native API、Core、Annotations、Quickstart、Java Persustence Privider (由 EntityManager、Core、Annotations 所組成)。
3. Java EE 5 : JBoss Sean、Hibernate EntityManager、Core、Annotations、Quickstart。
三、Hibernate 的運作流程
以下避開了與撰寫程式相關的部分,提供一個易懂的概述。
1. 我們將 Database 連線方式與 Hibernate Mapping File 的位置儲存到 Hibernate Configuration File。
2. 再將要儲存到 Database 的 Java Value Object 註冊到 Mapping File 中,換句話說,將 Java Value Object 的 properties 寫到 Mapping File。
3. 程式啟動時會先編譯 Mapping File,並透過 Mapping File 來對應 Java Class 與 Database schema。
三者之間的關係如同: Java Class <----> Mapping File <----> Database schema。所以我們也可以透過 Mapping File 來產生 Java Value Object 與 Database schema。
4. 程式編譯 Mapping File 後,會產生一個 SessionFactory,且每一個 Mapping File 只會產生 一個 SessionFactory ,
又因為一個 Mapping File 只對應到一個 Database schema,所以可以把 SessionFactory 視為要存取的 Database schama。
5. SessionFactory 產生後,可以從 SessionFactory 取得 Session,這裡所說的 Session 是Hibernate 把 Java SQL Connection 封裝而成的介面,作為程式與 Database 之間的聯絡橋樑,且一個 Session 只供一個 Thread 來使用。
6. 程式現在可以透過 Session 來存取 Database 了。
四、在下列情況中,建議不要改用 Hibernate
1. 目前程式使用複雜的 store procedure
2. 目前程式會使用 batch file 來存取大量的紀錄

