標籤:
參考書籍:《J2EE開源編程精要15講》
Hibernate是對象/關係映射(ORM,Object/Relational Mapping)的解決方案,就是將Java對象與對象關係映射到關係型資料庫中的表格與表格之間的關係。它是Java應用與關聯式資料庫之間的橋樑,負責Java對象和關係資料之間的映射。Hibernate內部封裝了通過JDBC訪問資料庫的操作,向上層應用提供了物件導向的資料庫訪問API。
Hibernate的體繫結構
Hibernate通過設定檔( hibernate.properties 或 hibernate.cfg.xml )和對應檔( .hbm.xml )把Java對象或持久化對象( Persistent Object,PO )映射到資料庫的表格,然後通過操作PO,對資料表中的資料進行增、刪、改、查等操作。
Hibernate的核心組件
- Configuration類:用來讀取Hibernate設定檔,並產生SessionFactory對象。
- SessionFactory介面:產生Session執行個體的工廠
- Session介面:用來操作PO。有get()、load()、save()、update()、delete()等方法用來對PO進行載入、儲存、更新及刪除等操作,是Hibernate的核心介面
- Query介面:用來對PO進行查詢操作。可從Session的createQuery()方法產生
- Transaction介面:用來管理Hibernate事務,主要方法有commit()和rollback(),可從Session的beginTransaction()方法產生
- Hibernate設定檔主要用來設定資料庫連結參數,如資料庫驅動程式、URL、使用者名稱、密碼等。有兩種格式:hibernate.properties 和 hibernate.cfg.xml,hibernate.cfg.xml可以在其<mapping>子項目中定義用到的xxx.hbm.xml對應檔列表,而hibernamte.properties需要在程式中以硬代碼方式指明。一般hibernate.cfg.xml是Hibernate的預設設定檔
- 對應檔(xxx.hbm.xml)用來把PO與資料庫中的資料表、PO之間的關係與資料庫之間的關係、以及PO的屬性與表欄位一一映射起來,是Hibernate的核心檔案
- 持久化對象(PO)可以是普通的JavaBean/POJO,唯一特殊的是他們正與(僅僅一個)Session相關聯。JavaBean在Hibernate中存在三種狀態:臨時狀態(transient)、持久化狀態(persistent)和託管狀態(detached)。當JavaBean對象在記憶體中孤立存在、不與資料庫中的資料有任何關聯關係時,為臨時對象;當它與一個Session相關聯時,為持久化對象;在這個Session被關閉的同時,這個對象變成脫管對象。
Hibernate的運行過程
1) 應用程式調用Configuration類,該類讀取Hibernate設定檔級對應檔中的資訊,並產生一個SessionFactory
2) 從SessionFactory對象產生一個Session對象,並用Session對象產生Transaction對象
3) 通過Session對象的get()、load()、save()、update()、delete()、saveOrUpdate()等方法對PO進行載入、儲存、更新、刪除等操作;通過Session對象產生一個Query對象,進行查詢操作
4) 如無異常,Transaction對象將提交這些操作結果到資料庫中
應用樣本 簡單使用者登記:http://pan.baidu.com/s/1dDGSzQh
相關資料:http://yusun.blog.163.com/blog/static/20174407620120432015398/
Java Web編程的主要組件技術——Hibernate入門