1.簡介
在Java開發領域,基於數據庫應用的設計與實現一直都是面向關系的,Hibernate對象/關系映射ORM框架的出現為Java面向對象開發提供了易於使用的數據持久化解決方案。
ORM介紹:
(a).ORM(Object Relation Mapping)中文翻譯成對象關系映射
(b).ORM是一種為解決“面向對象”與“關系數據庫”存在不匹配的現象而出現的一種技術
(c).ORM通過使用描述對象和數據庫之間映射的元數據,將java程序中的對象自動持久化到關系數據庫中
(d).ORM中的映射關系為:面向對象中的(類/對象/屬性)——>面向關系中的(表/表的行(記錄)/表的列(字段))
(e).ORM實現的思想:將關系數據庫中表的記錄(表的行)映射成對象,以對象的形式展現,程序員可以將對數據庫的操作轉化為對對象的操作
(f).流行的ORM框架:Hibernate , Ibatis , TopLink , apache OJB
Hibernate將java中的對象與對象的關系映射至關系型數據庫中成表格與表格的關系,起到了java應用和關系數據庫之間的橋梁作用,它封裝了JDBC訪問數據庫的操作,並向上層提供面向對象的數據庫訪問API。
這裡借用網上一張圖片來說下Hibernate與JDBC之間的區別:
2.Hibernate運行過程
(a). 應用程序調用configuration類
(b). configuration類讀取Hibernate配置文件以及映射文件,並用這些信息生成一個SessionFactory類。
(c).從SessionFactory類生成一個Session對象
(d).用Session對象生成一個Transaction對象
(e).可通過Session對象的get(),load(),save(),update(),delete() 和saveorupdate()等方法對POJO類(plain old java object)進行加載,保存,更新,刪除等操作
POJO介紹:
(a') POJO (plain old java object)中文譯為:簡單的java對象,普通的java類。
(b') POJO 實際意義是普通的JavaBeans(最簡單的java類,即一個類只有屬性,然後一大堆set,get和tostring方法)
(c') POJO 的特點是支持業務邏輯的協助類,不繼承不實現不注釋
JavaBean介紹:
(a')JavaBean 是POJODE的Serializable(序列化),它通常是被容器創建(如tomcat),所以它應該具有一個無參數的構造器。同時它也是一種組件技術,不能跨進程訪問。
(b') JavaBean 是一種JAVA語言寫成的可重用組件。為寫成JavaBean,類必須是具體的和公共的,並且具有無參數的構造器。
(c')JavaBean 通過提供符合一致性設計模式的公共方法將內部域暴露成員屬性,set和get方法獲取。
(d')眾所周知,屬性名稱符合這種模式,其他Java 類可以通過自省機制發現和操作這些JavaBean 的屬性。
(f).在查詢情況下,可通過Session對象生成一個Query對象,然後利用Query對象執行查詢操作;若無異常,Transaction對象將提交這些操作到數據庫中,若出現異常,則會回滾。
3.Hibernate項目分層結構:
從比較流行的MVC模式中將Hibernate可以分為如下幾個層次
數據層:指數據庫的設計
DAO層:DAO(Data Access Object)數據訪問對象。DAO層的提出是為了實現把對數據的操作和對業務的操作分離,DAO層直接為上層業務邏輯層提供訪問數據的接口。(DAO層比較重要)
業務邏輯層:這裡把業務邏輯層封裝成一個Service,直接供控制層調用。
控制層和視圖層:可見層,采用jsp,Html,css,ajax等。
Hibernate3.1.2_中文文檔PDF http://www.linuxidc.com/Linux/2016-02/128462.htm
Hibernate學習入門教程 http://www.linuxidc.com/Linux/2015-08/121498.htm
在Hibernate中開啟日志 http://www.linuxidc.com/Linux/2015-07/120499.htm
Hibernate+JUnit測試實體類生成數據庫表 http://www.linuxidc.com/Linux/2015-07/120161.htm
Hibernate整體理解 http://www.linuxidc.com/Linux/2014-07/104405.htm
Hibernate的映射機制 http://www.linuxidc.com/Linux/2014-12/110265.htm
Hibernate 的詳細介紹:請點這裡
Hibernate 的下載地址:請點這裡